*args和**kw都代表不确定的函数变量,即在函数调用时可以选择传入或者不传入参数,都不影响函数运行。
其中*args将传入对象当成是元组对待;**kw将传入对象当成字典对待。
例:
def fun(*args):
print(args)
fun(1,2,3)
(1,2,3)
def fun(**kw):
for k in kw:
print(k,kw[k])
fun(a=2,b=3)
a 2
b 3
*args的作用是在函数调用时,将所以的可变参数当成一个tuple传给args,再整体调用。若要调用变量a本身是个tuple又想要逐个调用其中元素,只需在参数传递时在传入*a即可。
def fun(*args):
for i in args:
print(i)
fun(*(1,2,3))
1
2
3
**kw的作用是在函数调用时,可变参数的key,value值打包成dic,传给kw。传递参数时在dic变量b前加入**,则变量被当做dic传入kw。
def fun(**kw):
for key in kw:
print(key)
print(kw)
fun(**{'a':1})
a
{'a':1}