函数的定义用def:
def func(): #func为函数名,定义方式与变量一样 i = '你好,函数' return i #返回值 l = func() #以函数名方式直接调用函数 print(l)
函数的返回值return:
可以为一个值
可以为多个值:接收时可以用一个变量接收,一个变量接收时返回为元组类型;可以用多个变量分别接收
def func(): i = '你好,函数','你好,艾克','你好,李' return i l = func() l1,l2,l3 = func() print(l) print(l1,l2,l3)
输出:
('你好,函数', '你好,艾克', '你好,李') 你好,函数 你好,艾克 你好,李
函数的参数:
形参(接收的参数):
位置参数,*args,默认参数(关键字参数),**kwargs:
总共四种,可以相互结合,结合使用时,位置参数必须放在第一位;可以为空;四种一起使用时,必须按照这个顺序;
位置参数必须传,*args可以接收多个参数;默认参数可以不传,传送时必须在**kwargs前面;**kwargs可以接收多个关键字参数;
*args返回为元组,**kwargs返回为字典
位置参数,多个返回值以一个变量接收时,返回为元组,可以分别用多个变量对应接收,返回值为原始数据类型
关键字参数(默认参数)传送可以打乱位置,多个返回值以一个变量接收时,返回为元组,可以分别用多个变量对应接收,返回值为原始数据类型。
实参(传送的参数):按位置传;按关键字传;前两者混合使用时,传送的位置参数必须在前
def func(a,b,c): return a,b,c l = func('你好,函数','你好,艾克','你好,李') l1,l2,l3 = func('你好,函数','你好,艾克','你好,李') print(l) print(l1,l2,l3) #打印: ('你好,函数', '你好,艾克', '你好,李') 你好,函数 你好,艾克 你好,李
def func(a='',b='',c=''): return a,b,c l = func(b='你好,函数',a='你好,艾克',c='你好,李') print(l) #打印: ('你好,艾克', '你好,函数', '你好,李') def func(d,a='',b='',c=''): return a,b,c,d l = func('aike',b='你好,函数',a='你好,艾克',c='你好,李',) print(l) #打印: ('你好,艾克', '你好,函数', '你好,李', 'aike')
def func(a,*args,b = 'ak'): return a,args,b l = func('你好,函数','你好,艾克','你好,李',b = 'aike') l1 = func(1,2,3,4) print(l) print(l1) #打印: ('你好,函数', ('你好,艾克', '你好,李'), 'aike') (1, (2, 3, 4), 'ak')
def li(**kwargs): return kwargs l = li(s = '柚柚柚切克闹',d = '小李小李可爱无比',f = '是的') print(l) #打印: {'s': '柚柚柚切克闹', 'd': '小李小李可爱无比', 'f': '是的'} def func(a,*args,b = 'ak',**kwargs): return a,args,b,kwargs l = func('你好,函数','你好,艾克','你好,李',b = 'aike',s = '柚柚柚切克闹',d = '小李小李可爱无比') l1 = func(1,2,3,4) print(l) print(l1) #打印: ('你好,函数', ('你好,艾克', '你好,李'), 'aike', {'s': '柚柚柚切克闹', 'd': '小李小李可爱无比'}) (1, (2, 3, 4), 'ak', {})
上面的*args和**kwargs称为动态传参,是站在形参的角度。那么站在实参的角度如何进行动态传输:
def func(*args): return args l = ['你好','函数','你好','艾克','你好','李'] print(func(*l)) print(func(*['你好','函数','你好','艾克','你好','李'])) print(func(l)) #打印: ('你好', '函数', '你好', '艾克', '你好', '李') ('你好', '函数', '你好', '艾克', '你好', '李') (['你好', '函数', '你好', '艾克', '你好', '李'],)
def func(**kwargs): return kwargs l = {'a':'你好函数','b':'你好艾克','c':'你好李'} l1 = {'a':'你好函数'} print(func(**l)) print(func(**{'a':'你好函数','b':'你好艾克','c':'你好李'})) print(func(**l1)) 打印: {'a': '你好函数', 'b': '你好艾克', 'c': '你好李'} {'a': '你好函数', 'b': '你好艾克', 'c': '你好李'} {'a': '你好函数'}