定义函数:
格式:
def 函数名(参数列表):
函数体
结果:
函数的参数:
(1)必须参数
调用时数量必须和声明时一样
不传入两个就是错的
(2)关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键 字参数确定传入的参数值
使用关键字参数允许调用函数时参数的顺序与声明时不一致,因为python解释器能够用参数名匹配参数值
(3)默认参数
在定义函数参数时,给参数一个默认值,如果没有给调用的函数的参数赋值,调用的函数就会使用这个默认值
注意:必须默认参数必须在非默认参数后否则会报错
(4)可变参数
如果需要一个函数能够处理的参数声明时更多,这些参数叫做可变参数,在参数名前加星号(*)如果变量参数在函数调用时没有指定参数,就是一个空元组。
结果:
两个星号传字典的key/value值
结果:
组合参数:
结果:
闭包定义:如果在一个内部的函数里对外部函数的变量进行引用,内部函数认为是闭包
结果:
递归函数:
结果:
这种方式,很容易造成栈满每次调用一次函数需要重新创建一层栈帧
用尾递归可以取消这个栈满的情况
匿名函数:
不在使用def语句定义函数,而是是使用lambda
偏函数:
通过functools模块被用户调用,偏函数是将所要承载的函数作为partial()函数的第一个参数,原函数的各个参数一次为partial()函数的后续参数
结果: