在函数定义def func(*args, **kw) 时,
参数args 前有‘*’符号,表示该参数是可变参数,即参数的数量可以为任意个;
参数kw 前有‘**’符号,表示该参数是关键字参数,即参数带有key,且数量可以为任意个;
在函数调用 func(*args, **kw) 时,
参数args 前有‘*’符号,表示会把args展开,把其中的每个参数传入;args是一个list或tuple.
参数kw 前有‘**’符号,表示会把kw展开,把其中的每个key=value传入;kw是一个dict.
def sum(x,y,z=10,**kw):
print kw
return x+y+z
nms = [1,2]
sts = {'a':1,'z':20}
print sum(*nms,**sts) #实际运行 sum(1,2,z=20,a=1),并组装了kw={'a':1} #output: {'a':1} 23