*args 和**kwargs 的理解以及 函数的参数的总结
一:函数参数的理解:
def 函数名(函数参数): 函数体 例如: def func(a): # a 是形参 print(a) func(123) # 123 是实参 形参又分为: 关键字参数,位置参数,混合参数 关键字参数 def func(x,y,z="默认参数"): print(x,y,z) func(1,y="xumou") # 1 xumou 默认参数 ''' 1 代表 位置参数、 y 代表 关键字参数 z 代表默认参数 他们之间的关系:关键字参数必须要在位置参数的后面, 位置参数〉关键字参数,默认值参数 ''' # 接收动态参数的时候,动态参数必须要在位置参数后面 def func01(a,b,*gg): print(gg,a,b) func01(1,2,"34") # 位置参数和默认值参数:必须先声明位置参数,再声明默认值参数 def func03(a,c=12): print(a,c) func03("AA") # AA 12 # *pp中的*接收任意动态参数: def func03(*pp): print(pp) func03("q","w","e",22,33) # ('q', 'w', 'e', 22, 33) # 接受动态参数:位置参数必须要在动态参数 def func04(a,b,*args): print("func04>>",a,b,args) func04(1,2,5,7) # func04>> 1 2 (5, 7) # ----------错误示范:---------- def func04(*args,a,b): print("func04>>",a,b,args) func04(1,2,5,7) # 报错 # -------------------- # 报错:因该改为: def func04(*args,a,b): print("func04>>",a,b,args) func04(1,2,a=5,b=7) # func04>> 5 7 (1, 2) # **kwargs 用来接收动态关键字参数 def func02(**kwargs): print(kwargs) # {'a': 12, 'b': 23} 结果是一个dict func02(a=12,b=23) # 最终的顺序是: # 位置参数〉*args〉默认值参数〉**kwargs
普通人!