标签:python函数动态参数 *args **kwargs
Python的动态参数:
1,参数前一个“*”:在函数中会把传的参数转成一个元组。
func (* func(123,1,2,) result:(123, 1, 2, ‘a‘)
2,“**args”的参数:函数中被转成一个字典。
如果这样传参的话会报错,因为没有指定key或value:def func (**args): print(args) func(123,1,2,‘a‘) result:TypeError: func() takes 0 positional arguments but 4 were givendef func (**args): print(args) func (a=1,b=2) result:{‘a‘: 1, ‘b‘: 2}
3,混合动态参数的情况:
def func (*args,**kwargs): print("%s----%s" %(args,kwargs)) func (1,2,a=1,b=2) Result:(1, 2)----{‘b‘: 2, ‘a‘: 1} 也是没问题的,需要注意的是必须*args在前**kwargs在后,参数也是一样。
4,变量当动态参数的情况:
这种情况如果我们直接把一个list传到前面,一个dict传到后面:def func (*args,**kwargs): print("%s----%s" %(args,kwargs)) list=[1,2] dic={‘a‘:1,‘b‘:2} func (list,dic) Result:([1, 2], {‘b‘: 2, ‘a‘: 1})----{} 后面的字典竟然是空的- -! So,我们需要叫函数知道那个变量是*args的参数,哪个是**args的参数,正确传参写法: func(*list,**dic Result:(1, 2)----{‘a‘: 1, ‘b‘: 2}
本文出自 “陆雅亮” 博客,转载请与作者联系!
标签:python函数动态参数 *args **kwargs
原文地址:http://luyaliang.blog.51cto.com/3448477/1868138