Python*args和**kwargs的区别

Posted 下辈子做一只猫

tags:

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

1、*args表示将参数作为元组传给函数

通过一个函数的定义来理解’*args’的含义

修改函数的定义:

>>> def fun(*args):
...     print args
... 

传一个位置参数调用此函数

>>> fun(13)
(13,)

传多个参数调用此函数

>>> fun(11,93,43)
(11, 93, 43)

‘*args’在函数定义中是做什么用的?

它接收元组作为位置参数,而非是常见的参数列表。在这里,”args”是个元组。在上个例子中,调用函数打印”args”时,他会打印元组中包含的所有数值。

2、**kwargs表示将参数作为字典传给函数

通过函数定义来理解’**kwargs’的含义

重定义函数”fun”:

>>> def fun(a, **kwargs):
...     print a, kwargs
... 

此函数只用一个位置参数,因为常规参数列表中只有一个变量’a’.但是通过”**kwargs”,可以传多个键值参数。

>>> fun(1, b=4, c=5)
1 {\'c\': 5, \'b\': 4}
>>> fun(45, b=6, c=7, d=8)
45 {\'c\': 7, \'b\': 6, \'d\': 8}

在函数定义中”**kwargs”意味着什么? 
用”**kwargs”定义函数,kwargs接收除常规参数列表职位的键值参数字典。在这里’kwargs’是个字典。

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

Python - *args和**kwargs的区别

Python*args和**kwargs的区别

Python中*args和**kwargs的区别

Python中*args和**kwargs的区别

Python的*args与**kwargs

python args kwargs 传递参数的区别