Python动态参数*args与**kwargs

动态参数的含义

传入的参数个数是动态的,可以是0个到任意个,实现没有规定参数的数量。

动态参数的种类

动态参数一般有两种,*args和**kwargs。这里只有星号*的区别,一个星号和两个星号,后面的名字是人们根据习惯取的。可以根据个人喜好命名成*one和**two,等等。

*args

一个星号表示接收任意个参数。调用时,会将实际参数打包成一个元组传入形式参数。如果参数是个列表,会将整个列表当做一个参数传入。例如:

def function(*args):

    print(args, type(args))

function(1)

结果:(1, ) <class 'tuple' >

有时候我们传入一个列表,本意是希望将列表中的所有元素都当做参数传递进去,这里直接将['a', 'b', 'c']看做一个整体了,怎么办?其实只需要在调用时前面加一个*号,就能实现将列表中的每个元素传递进去了。其实不光列表,任何序列类型数据对象,比如字符串、元组都可以通过这种方式将内部元素逐一作为参数,传递给函数。而字典,则会将所有的key逐一传递进去。

**kwargs

 **kwargs 打包关键字参数成dict给函数体调用。例如:

def function(**kwargs):

    print( kwargs, type(kwargs))

function(a=2)

结果:{'a' : 2} <class 'dict' >

注意

如果一个函数需要同时用到参数、动态参数*args和**kwargs时,注意顺序一定是(args,*args,**kwargs),否则程序会报错。

参考资料

https://www.cnblogs.com/gcgc/p/11426478.html

https://www.cnblogs.com/yunguoxiaoqiao/p/7626992.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。