参数传递
关键字传参:
#.使用键值对来传参数据更加清晰
#.当位置参数与关键字参数同时存在时,我们需要将位置参数写在关键字参数的前面.
默认参数传递
定义函数,为参数提供默认值,调用函数时可传可不传该默认参数的值。调用函数时,如果没有传递参数则会使用默认参数.
注意:
1.必选参数在前,默认参数在后,否则报错
2.默认参数必须指向不变对象
不定长参数传递
定义函数时,有时候我们不确定调用的时候会传递多少个参数(或者传递参数的个数为0),此时我们可以使用包裹位置参数或者包裹关键字参数来进行参数传递。
包裹位置参数 *args
与位置参数相比定义时多了个*,
能收集除必选参数之外所有剩余位置参数
收集到的参数作为元组来进行处理.
包裹关键字参数 **kwargs
kwargs作为字典来进行处理的,收集所有的关键字参数。
将传递的变量名作为key,传递的值作为value
注意:在python中定义函数,可以用必选参数、默认参数、可变参数和关键字参数,这4中参数可以一起使用,或者是只用其中的某些,但是注意,参数定义与调用的顺序必须是:必选参数【位置参数】、默认参数、可变参数【包裹位置】和关键字参数【包裹关键字】。
传参: func(*name,**user) name为list,user为dict, 传递时将列表和字典展开传递
匿名函数
lambda 参数列表 : 表达式
好处:不担心函数名冲突,结够简单,使用方便
调用时,将它赋值给一个变量
装饰器
def outer(f):
def inter(a,b):
print("************",b)
return f(a)
return inter
通过装饰器名调用:
outer(fun) : 内部只定义了一个inter函数, 啥都不做,返回内函数inter
outer(fun)(a): 将传入函数的参数传入内函数inter,执行整个inter函数,相当于调用了装饰器;
也可以使用@outer来调用装饰器,将装饰器应用到传入的函数上,再调用传入的函数fun,fun()达到效果
偏函数
偏函数的作用就是把函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新的函数会更简单。
int3 = functools.partial(int, base=2)
print(int3("100"))
#在创建偏函数的时候,实际上固定了关键字参数base
#结果
4