好文档 - 专业文书写作范文服务资料分享网站

Python个人自学笔记 - 图文

天下 分享 时间: 加入收藏 我要投稿 点赞

2 函数

help(函数名) #查看函数的帮助

2.1 数据类型转换函数

int(待转换的对象)

float(待转换的对象) str(待转换的对象) bool(待转换的对象)

2.2 函数定义

函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”。

定义:在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒

号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。

pass语句相当于占位符,什么也不做,避免程序报错 isinstance(x, (int, float)) #参数类型检查 函数可以同时返回多个值,但其实是一个tuple

2.3 函数参数

位置参数:调用函数时,传入的值按照位置顺序依次赋予的参数;

默认参数:默认参数可以简化函数的调用;当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。

有多个默认参数时,调用的时候,既可以按顺序提供默认参数,比如调用enroll('Bob',

'M', 7),意思是,除了name,gender这两个参数外,最后1个参数应用在参数age上,city参数由于没有提供,仍然使用默认值。

也可以不按顺序提供部分默认参数。当不按顺序提供部分默认参数时,需要把参数名写上。比如调用enroll('Adam', 'M', city='Tianjin'),意思是,city参数用传进去的值,其他默认参数继续使用默认值。

注意: 定义默认参数要牢记一点:默认参数必须指向不变对象!

可变参数:定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数。

*nums表示把nums这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见。 关键字参数:

关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict

也可组装一个dict传给函数,注意kw获得的dict只是外部dict的一份拷贝,对kw的改动不会影响到函数外的dict 命名关键字参数:

def person(name, age, *, city, job): print(name, age, city, job)

和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命

名关键字参数。如果缺少*,Python解释器将无法识别位置参数和命名关键字参数;

如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了;

命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错。

注意:参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参

数。

例:计算两个或多个数的乘积,可接收一个或多个参数 def product(*y): if len(y)==0:

raise TypeError res=1 for yy in y:

res=res*yy return res

2.4 尾递归

解决递归层数较多导致的栈溢出问题。例如:

3 高级特性

在Python中,代码不是越多越好,而是越少越好。代码不是越复杂越好,而是越简单越好。

3.1 切片

对经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。

L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。L[:3]可以省略0. L[-1]取倒数第一个元素,同样支持倒数切片

L[-10]取后10个元素

Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。

例如:

>>> (0, 1, 2, 3, 4, 5)[:3] (0, 1, 2)

>>> 'ABCDEFG'[:3] 'ABC'

>>> 'ABCDEFG'[::2] #最后一个冒号后面的2表示间隔 'ACEG'

3.2 迭代

默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items(); 注意:

如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断: >>> from collections import Iterable

>>> isinstance('abc', Iterable) # str是否可迭代 True

>>> isinstance([1,2,3], Iterable) # list是否可迭代 True

>>> isinstance(123, Iterable) # 整数是否可迭代 False

最后一个小问题,如果要对list实现类似Java那样的下标循环怎么办?Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:

>>> for i, value in enumerate(['A', 'B', 'C']): ... print(i, value) ... 0 A 1 B 2 C

3.3 列表生成式

如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循环: >>> L = []

>>> for x in range(1, 11): ... L.append(x * x) ... >>> L

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list: >>> [x * x for x in range(1, 11)] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方:

Python个人自学笔记 - 图文

2函数help(函数名)#查看函数的帮助2.1数据类型转换函数int(待转换的对象)float(待转换的对象)str(待转换的对象)bool(待转换的对象)2.2函数定义函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”。
推荐度:
点击下载文档文档为doc格式
4gfqq0rt4f00kc5204u903ypi6bk8900j0x
领取福利

微信扫码领取福利

微信扫码分享