参数arg、*args、**kwargs三个的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了参数arg、*args、**kwargs三个的区别相关的知识,希望对你有一定的参考价值。
参考技术A arg:单个的参数
*args: 将参数(一般为未命名参数或者叫位置参数)打包成元祖类型的给函数使用
* kwargs: 将参数(一般是命名参数或者叫关键字参数)打包成字典形式
args和 kwargs都是不定长参数,可以传0或者更多的参数
举例:
*args:
**kwargs:
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
以上是关于参数arg、*args、**kwargs三个的区别的主要内容,如果未能解决你的问题,请参考以下文章