一:* 的作用,个人理解代表所有
def fun(a,b,c):
print(a,b,c)
l1=[1,2,3]
l2=[1,2,3,4]
fun(*l1) ---->>> 1 2 3 #可以调用打印出所有元素
fun(*l2) ---->>> 出错,需要注意定义fun的时候三个元素,而l2有4个元素所以出错
二:** 的作用,个人理解代表所有,但是是对象是字典
def fun(a,b,c): print(a,b,c)
d={'b':2,'c':3}
fun(1,**d) --->>> 1,2,3,
fun(**d) --->>>出错,定义fun时候是三个元素,而d为2个,个数不匹配,所以出错
三:*args 的作用,将参数打包成元组进行调用
def fun(x,y,*args): print(x,y,args) fun(1,2,3,4,5) --->>>1 2 (3, 4, 5)
将1、2与x、Y匹配,剩余的交给*args打包成元组
四:**kwargs 的作用,将参数打包成字典
def fun(a,**kwargs): print(a,kwargs)
fun(1,b=2,c=3) --->>> 1 {'b': 2, 'c': 3}
fun(1,**{'b':2,'c':3}) --->>> 1 {'b': 2, 'c': 3}
将剩下的匹配打包成字典
总结:*、** 在调用的时候使用,*args、**kwargs在定义函数的时候使用。并且参数顺序必须是:arg、*args、**kwargs 不然报错的