函数是先定义在调用,定义阶段只检测语法,不执行代码
return能返回多个元素,元组的形式返回,也能返回列表,字典,只要是一个整体
在函数外定义的变量叫全局变量,在函数内定义的变量叫局部变量,从内向外找
列表和字典当全局变量时可以不用再函数里加global
形参里的叫缺省参数,也叫默认参数,实参里的是命名参数,如果要指定传给哪个变量,变量名必须和形参相同
不定长参数,args接收多余的参数
def test(a,b,c=33,*args): print(a) print(b) print(c) print(args) test(11,22,33,44,55,66) """ 11 22 33 (44, 55, 66) """
这样A,B会全部被*args接受
def test(a,b,c=33,*args,**kwargs): print(a) print(b) print(c) print(args) print(kwargs) A=(44,55,66) B={'name':'laowang','age':18} test(11,22,33,A,B)
"""
11
22
33
((44, 55, 66), {'name': 'laowang', 'age': 18})
{}
"""
在元组前面加上*,在字典前面加上**,就能表示元组被args接收,字典被kwargs接收,也叫解包
def test(a,b,c=33,*args,**kwargs): print(a) print(b) print(c) print(args) print(kwargs) A=(44,55,66) B={'name':'laowang','age':18} test(11,22,33,*A,**B)
"""
11
22
33
(44, 55, 66)
{'name': 'laowang', 'age': 18}
"""
匿名函数当做实参传递
def test(a,b,func): result=func(a,b) return result num=test(11,22,lambda x,y:x+y) print(num)
动态语言的特性,自定义函数的功能
def test(a,b,func): result=func(a,b) return result func_new=input('请输入一个匿名函数:') func_new=eval(func_new) num=test(11,22,func_new) print(num)