Python中*args 和**kwargs的用法

it2022-05-05  161

Python中*args 和**kwargs的用法

文章目录

Python中*args 和**kwargs的用法**args****kwary

*

例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中的各个元素看成单独的

*args

以下面代码为例

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的元素。

**

def fun(a,b,c): print a,b,c d={'c':9} fun(4,6,d) fun(4,6,**d) fun(1,2,**{'c':0})

输出

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

**kwary

def fun(a,**kwargs): print a print kwargs fun(1,e=1,c=3,d=7,b=9)

输出

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不能与函数前面的形参同名。


最新回复(0)