码迷,mamicode.com
首页 > 编程语言 > 详细

python函数动态参数详解

时间:2016-11-01 21:43:34      阅读:228      评论:0      收藏:0      [点我收藏+]

标签: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函数动态参数详解

标签:python函数动态参数   *args   **kwargs   

原文地址:http://luyaliang.blog.51cto.com/3448477/1868138

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!