【函数的定义和调用】
{按位置传参}
def 函数名(arg1,arg2,arg3,...):
.....
函数名(object1,obj2,arg3,...)
{按关键字传参}
def 函数名(arg1,arg2,arg3,...):
.....
函数名(arg1=object1,arg3=obj2,arg2=obj3,...)
*带默认值
带默认值的参数要定义在所有不带有默认值的后面,但是如果加上按关键字传参则不会报错
def 函数名(arg1=100,arg2,arg3,...):
.....
函数名(arg1=object1,arg3=obj2,arg2=obj3,...)
def 函数名(arg1,arg2,arg3=100):
.....
函数名(obj1,obj2)
*可变位置参数
def 函数名(*arg): ##arg is tuple,
....
{可变关键字参数}
传参的参数带有表示解包,形参带有表示打包
非可变参数必须要在可变参数之前
def 函数名(*arg)
...
li=[1,2,3,4]
函数名(*li)
def 函数名(**kwarg) ##函数中的kwargs是一个字典
...
d={'name':'tom','age':23}
函数名(**d)
def func(i,j,*args):
...
func(1,2,'1',"a","abc")
【函数的返回值】
如果在函数中没有定义return的值,那么返回值就是None
函数返回多个值时,实际是返回一个元组
函数返回值可以是任何对象,包括函数。
python中函数递归的最大深度为1000
python中应尽量避免递归,绝大多数递归都是可以转换为迭代的,迭代要比递归快很多
【高阶函数】
函数可以作为函数的参数。像这样的函数称作高阶函数
filter(函数 or None,序列) ,这里以序列是列表为例,遍历列表,调用函数,函数返回为true的时候返回当前遍历的列表元素
map(函数,序列) 列表中的所有元素都放入函数执行一次
reduce(函数,序列) 这个函数必须为两个参数
下面截图为手工实现以上三个高阶函数的代码