是可变参数还是参数解包,取决于在形参位置还是实参位置、
1.*args将收集所有位置相关的参数,并放到一个元祖中,最后将这个元祖赋值给args
2.**kwargs指针对关键字参数
这些关键字参数会放到一个相应的字典中,然后同样的赋值个kwargs
def demo(*args,**kwargs):
print args,kwargs
demo()
"""
()
{}
"""
demo(1,2)
"""
(1,2)
{}
"""
demo(c='a',b='d')
"""
()
{'c': 'a', 'b': 'd'}
"""
demo(1,2,c='a',b='d')
"""
(1, 2)
{'c': 'a', 'b': 'd'}
"""
参数解包
1. *arg可以解包元组,而**kwarg则可以解包字典
def demo(a,b,c):
print a,b,c
kwargs = {'a':1,'b':2,'c':3}
demo(**kwargs)
结果:1 2 3
args =(1,2,3)
demo(*args)
1 2 3
可变参数和参数解包区别
-
可变参数是在形参中,利用*,**来实现
-
参数解包是在实参中,利用*,**来实现