函数
- 以def开头,后跟函数名和参数列表,下一行开始可以是字符串(文档字符串),用于说明函数(可选),函数体,且必须缩进
- 文档字符串。
def Nothing():
"""Do Nothing """
pass
print(Nothing.__doc__)
#输出Do Nothing
- 函数可以有return语句,从函数内部返回一个值,无return语句或不带返回参数的返回None
- 参数数目可变,通过默认值实现
默认值在函数定义位置计算的,
默认值只执行一次,这条规则在默认值为可变对象是很重要,列表/字典都是可变对象
def fun(a,b=[]):
b.append(a)
return b
print(fun(1))
print(fun(2))
print(fun(3))
#打印结果:
#[1]
#[1,2]
#[1,2,3]
以下不会在后续调用之间共享默认值
def f(a, L=None):
if L is None:
L = []
L.append(a)
return L
- 关键字参数
可以使用形如karg=value来调用参数
def f(a,b=2,c='qw',d='er'):
print('a:',a);
print('b:',b);
print('c:',c);
print('d:',d);
f(1)
f(a=1)
f(a=1,b=45)
f(67,'qwty','df')
f(b=78,34)
f(a=122,344)
#以上两个报错,因为位置参数必须在关键字参数后面
f(100,a=23)
#报错,两个参数都是给a
- *name和 **name的参数
*name包含实参中除与正式形参相对应的位置参数以外的所有位置参数组成的元组
**name包含实参中除与正式形参相对应的关键字参数以外的所有关键字参数组成的字典
def fun(a, *arguments, **keywords):
print('a:',a)
for arg in arguments:
print(arg)
print("-" * 40)
for kw in keywords:
print(kw, ":", keywords[kw])
调用
fun(1,2,3,4,e=5,f=6,g=7)
- 1.agrs可以包含任意数目的参数,
2.出现在args后的只能是关键字参数
args=[3,7]
list(range(*args))相当于range(3,7)
*运算符从列表或元组中解包参数
**运算符
keys=["a":"qw","b":"as","c":"zx"]
def fuc(a,b,c='0'):
pass
fuc(**keys)
- Lambda表达式
lambda a,b:a+b 返回一个小的匿名函数,以上的表达式实现a和b的求和
pairs=[(1,'r'),(4,'b'),(0,'g'),(9,'d')]
pairs.sort(key=lambda pair:pair[1])
#sort函数中的key规定按哪个元素排序
今日标记
- 函数标注
- enumerate