# coding:utf-8if __name__ =='__main__':'''
例1:在未出现参数名=参数值的传参形式时,参数从左往右匹配
例2:在出现参数名=参数值的传参形式后,按照参数名进行匹配,其后参数也需要使用参数名=参数值的传参形式,否则报错
例3:在可变元组参数前使用过参数名=参数值的传参形式导致可变元组参数无法赋值,报错
例4:在可变字典参数前使用过参数名=参数值的传参形式并不会影响可变字典参数的赋值
'''# 例1defsee(a, b=0, c=1):print(f'a is {a},b is {b} ,c is {c}')
see(1,2,3)# a is 1,b is 2 ,c is 3# 例2
see(c=3, b=2, a=1)# a is 1,b is 2 ,c is 3# see(a=1, 2, 3) Error 后面的传参格式也要使用参数名=参数值的形式# 例3defps(a, b=0, c=1,*args):print(f'a is {a},b is {b} ,c is {c},args is {args}')
ps(1,2,3,4,5)# a is 1,b is 2 ,c is 3,args is (4, 5)# ps(1, b=2, c=3, 4, 5) Error 可变元组参数前使用过参数名=参数值的传参形式导致无法赋值给可变元组参数# 例4defks(a, b=0, c=1,**kwargs):print(f'a is {a},b is {b} ,c is {c},kwargs is {kwargs}')
ks(1,2,3, name='xie', sex='man')# a is 1,b is 2 ,c is 3,kwargs is {'name': 'xie', 'sex': 'man'}
ks(a=1, b=2, c=3, name='xie', sex='man')
元组转为可变元组参数
# coding:utf-8if __name__ =='__main__':'''
通过*tuple将元组变为可变元组参数
*tuple能够将自身元素依次当作参数传入函数
tp(参数......,*(1,2......)) 等价于 tp(参数......,1,2......)
'''deftp(a,*args):print(f'a is {a},args is {args}')
tp(1,2,3)# a is 1,args is (2, 3)
tp(1,(2,3))# a is 1,args is ((2, 3),)
tp(1,*(2,3))# a is 1,args is (2, 3)deftp(a, b):print(a, b)
tp(*(1,2))# 1 2
字典转为可变字典参数
# coding:utf-8if __name__ =='__main__':'''
通过*dict将字变为可变字典参数
**dict能将字典元素的key=>value依次当做参数传入函数
dp(参数......,**{key1:value1,key2:value2......}) 等价于 dp(参数......,key1=value1,key2=value2......)
'''defdp(a,**kwargs):print(f'a is {a},kwargs is {kwargs}')
dp(1, name='xie', sex='man')# a is 1,kwargs is {'name': 'xie', 'sex': 'man'}
dp(1,**{'name':'xie','sex':'man'})# a is 1,kwargs is {'name': 'xie', 'sex': 'man'}defdp(name, sex):print(f'name is {name}, sex is {sex}')
dp(**{'name':'xie','sex':'man'})
参数类型约定
# coding:utf-8if __name__ =='__main__':'''
通过参数:类型(python3.7以后才有) 来告诉别人参数的类型,给人看的,python并不会去验证
'''deflsp(name:bool):print(name)
lsp('ok')# ok 并不会报错
lamdba函数
# coding:utf-8if __name__ =='__main__':#lambda函数'''
定义 lambda 参数1,参数2...... : 简单的逻辑(无需添加return,添加return则报错)
调用 将lambda赋值给变量后通过变量(参数1...,参数2......)调用
'''
f =lambda x,y=0: x+y
print(f(1,2))# 3print(f(2))# 2# f = lambda x,y: return x + y Error 不需要return