Python的*args与**kwargs

Posted BlackMatrix

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python的*args与**kwargs相关的知识,希望对你有一定的参考价值。

当Python的函数的参数不确定时,可以使用*args与**kwargs来指代不定数量的参数。

两者的区别是,*args是个tuple(元组),而**kwargs是个dict(字典)。更简单的说,就是*args不带key,**kwargs带key。

先通过代码来验证上述的结论是否正确:

def func_args(*args):
    print(type(args))

def func_kwargs(**kwargs):
    print(type(kwargs))

if __name__ == __main__:
    func_args(1, 2, 3)
    func_kwargs(a=1, b=2, c=3)

运行结果,可以明确看出args是元组,kwargs是字典

<class tuple>
<class dict>

 

接着尝试下*args的使用,实现一个函数,将传入的参数值×2后返回。因为传入的参数数量不定,所以函数返回的结果也不定。

def func_a(*args):
    return tuple(arg * 2 for arg in args)

if __name__ == __main__:
    a, b = func_a(1, 2)
    c, d = func_a(a, b)
    print(a, b, c, d)

在func_a中,返回了一个元组,利用Python元组自动解包的功能,将tuple的值分别赋值给变量a 和 b。

运行结果:

2 4 aa bb

 

以上是关于Python的*args与**kwargs的主要内容,如果未能解决你的问题,请参考以下文章

python *args 与 **kwargs

python3进阶之*args与**kwargs用法

python的*args与**kwargs

Python—参数*arg与**kwargs参数的用法

Python代码中func(*args, **kwargs)是啥意思

python中*args和**kwargs学习