"""
函数:函数是组织好的,可重复使用的,用来实现单一,或相关联的代码段
作用:减少代码的复用度
定义函数格式:
def 函数名([parameters]):
语句
[return:expression] #用于结束定义函数并将值(若有)返回
调用函数格式: 函数名([parameters])
若函数有返回值,可以将返回值赋值给变量: 变量名 = 函数名([parameters])
函数的参数分3种:
1. 必备参数 调用函数时必须参数的值
2. 默认参数 在定义函数时,给参数一个值,调用函数时可以不传该参数的值
3. 不定长参数 给函数能处理比定义时传入更多的参数,有两种定义形式,一种*参数名;另外一种**参数名,一个函数有且仅有1个不定长参数定义形式
调用函数时,有2中方式给参数传值:
1. 顺序传值: 按照函数定义的顺序传入参数值
2. 关键字传值:按照参数名 = 值的格式传入参数值,传参数值的顺序可以不一致
注意,调用函数的参数名与定义函数的参数名要一致,否则报错(不定长参数形式2除外)
不定长参数 只能用顺序传值的方式传参(因为一个参数名不能对应多个值,)
即 函数名(*参数名) 函数名(值1,值2,值3) 参数名 =(值1,值2,值3),以元组的形式接收参数值
即 函数名(**参数名) 函数名(变量1=值1,变量2=值2,变量3=值3) 参数名 = {"变量1":值1,"变量2":值2,"变量2":值3},以字典的形式接收变量名和值的参数
注意:不定长参数形式2 与 关键子传值的格式很类似,因此要避免传参的变量名与参数名一致,若一致,则是给函数的参数名赋值,而不是将变量名和值传给不定长参数形式2
根据以上的参数的性质,最好定义函数的参数列表(parameters)的顺序为:必备参数,不定量参数形式1,默认参数,不定量参数形式2
根据以上的参数性质,调用函数的参数列表(parameters)的顺序为:
必备参数 若有不定量参数形式1,使用顺序传值
默认参数 若有不定量参数形式1,使用关键字传值
不定长参数形式1 顺序传值
不定长参数形式2 顺序传值
"""
def fun1(a,*c,b=3,**d):
print("1","a:",a,"b:",b,"c:",c,"d:",d)
fun1(3)
fun1(3,4)
fun1(a=3,b=2)
fun1(2,4,f=1)
fun1(1,3,f=4,b=2)
"""
匿名函数(lambda表达式),用于定义简单的函数,其格式如下
函数名 = lambda [parameters] : 语句
"""
fun2= lambda a,*c,b=3,**d :print("2","a:",a,"b:",b,"c:",c,"d:",d)
fun2(3)
fun2(3,4)
fun2(a=3,b=2)
fun2(2,4,f=1)
fun2(1,3,f=4,b=2)
del fun1,fun2
原文:https://www.cnblogs.com/hjlin/p/10628897.html