例1
def fun(a,b,c): print a,b,c fun(1,2,3) L=(4,5,6) fun(*L)输出
1 2 3 4 5 6例2
def fun(a,b,c): print a,b,c fun(1,2,3) L=(5,6) fun(7,*L)输出
1 2 3 7 5 6*在这里的作用是把一个tuple(元组)拆分一个一个个的元素 *+一个tuple等效与把tuple中的各个元素看成单独的
以下面代码为例
def fun(a,b,*args): print a,b print args fun(2,122,1213,'3434','s','sdwf','243rds')输出
2 122 (1213, '3434', 's', 'sdwf', '243rds')函数 fun(a,b,*args)是接受至少2个参数其中分别赋值给变量a,b;则args为一个空的tuple;若大于两个则除去第一第二的,其余全部构成一个tuple,如果有list,tuple或者dict就是那个tuple的元素。
输出
4 6 {'c': 9} 4 6 9 1 2 0例2
def fun(a,b,c): print a,b,c p={'a':7} fun(4,7,**p)输出
in <module> fun(4,7,**p) TypeError: fun() got multiple values for keyword argument 'a'例3
def fun(a,b,c): print a,b,c q={'d':8} print fun(2,5,**q)输出
in <module> print fun(2,5,**q) TypeError: fun() got an unexpected keyword argument 'd'综上所述: 只用于dict,若在函数中使用**dict,则dict的key值必须于形参命一致才能正确传参,否则报错,其中形参值为dict中key所对应的value
输出
1 {'c': 3, 'b': 9, 'e': 1, 'd': 7}例2
def fun(a,**kwargs): print a print kwargs fun(1,a=1,c=3,d=7,b=9)输出
in <module> fun(1,a=1,c=3,d=7,b=9) TypeError: fun() got multiple values for keyword argument 'a'综上所述: **kwarys是生成dict的,其中赋值号左值为key,右值为value;且其中key不能与函数前面的形参同名。