*args 和**kwargs 的理解以及 函数的参数的总结
Posted mtn007
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了*args 和**kwargs 的理解以及 函数的参数的总结相关的知识,希望对你有一定的参考价值。
一:函数参数的理解:
1 def 函数名(函数参数): 2 函数体 3 4 例如: 5 def func(a): # a 是形参 6 print(a) 7 8 func(123) # 123 是实参 9 10 形参又分为: 关键字参数,位置参数,混合参数 11 关键字参数 12 def func(x,y,z="默认参数"): 13 print(x,y,z) 14 15 func(1,y="xumou") # 1 xumou 默认参数 16 ‘‘‘ 17 代表 位置参数、 18 y 代表 关键字参数 19 z 代表默认参数 20 21 他们之间的关系:关键字参数必须要在位置参数的后面, 22 23 位置参数〉关键字参数,默认值参数 24 25 ‘‘‘ 26 # 接收动态参数的时候,动态参数必须要在位置参数后面 27 def func01(a,b,*gg): 28 29 print(gg,a,b) 30 31 func01(1,2,"34") 32 33 # 位置参数和默认值参数:必须先声明位置参数,再声明默认值参数 34 def func03(a,c=12): 35 36 print(a,c) 37 38 func03("AA") # AA 12 39 40 41 # *pp中的*接收任意动态参数: 42 def func03(*pp): 43 print(pp) 44 func03("q","w","e",22,33) # (‘q‘, ‘w‘, ‘e‘, 22, 33) 45 46 47 # 接受动态参数:位置参数必须要在动态参数 48 49 def func04(a,b,*args): 50 print("func04>>",a,b,args) 51 func04(1,2,5,7) # func04>> 1 2 (5, 7) 52 53 # ----------错误示范:---------- 54 def func04(*args,a,b): 55 print("func04>>",a,b,args) 56 func04(1,2,5,7) # 报错 57 58 # -------------------- 59 60 # 报错:因该改为: 61 def func04(*args,a,b): 62 print("func04>>",a,b,args) 63 func04(1,2,a=5,b=7) # func04>> 5 7 (1, 2) 64 65 66 67 # **kwargs 用来接收动态关键字参数 68 def func02(**kwargs): 69 print(kwargs) # {‘a‘: 12, ‘b‘: 23} 结果是一个dict 70 71 func02(a=12,b=23) 72 73 74 # 最终的顺序是: 75 # 位置参数〉*args〉默认值参数〉**kwargs
以上是关于*args 和**kwargs 的理解以及 函数的参数的总结的主要内容,如果未能解决你的问题,请参考以下文章