python函数动态参数详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python函数动态参数详解相关的知识,希望对你有一定的参考价值。

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函数参数详解

Python全栈开发之8装饰器详解

Go-动态类型与类型断言详解(含type-switch及全部代码)

python函数中的参数类型

静态Web服务器-命令行启动动态绑定端口号Python解释器详解实现代理池的API模块

python函数详解