码迷,mamicode.com
首页 > 编程语言 > 详细

python的*args与**kwargs

时间:2018-03-17 23:28:53      阅读:485      评论:0      收藏:0      [点我收藏+]

标签:AC   *args   ast   字典   erro   ror   错误   font   允许   

1. *args 允许将一个非键值对的可变数量的参数列表(元组)传递给一个函数。

>>> def add(*args):
...     return sum(args)
...
>>> add(1,2,3,4)
10
>>> a = (1,2,3,4)
>>> add(a) # 错误,等价于sum(((1,2,3,4),)),即将元组a与0相加
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in add
TypeError: unsupported operand type(s) for +: int and tuple
>>> add(*a)
10
>>> sum(((1,2,3,4),))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: int and tuple

 

2. **kwargs 允许将一个键值对的可变数量的参数字典传递给一个函数。

>>> def add(**kwargs):
...     return sum(kwargs.values())
...
>>> add(a=1,b=2,c=3)
6

 

综合:

>>> def f(arg,*args,**kwargs):
...     print(arg)
...     print(args)
...     print(kwargs)
...
>>> f(1,*(1,2,3,4),**{"a":1,"b":2,"c":3})
1
(1, 2, 3, 4)
{b: 2, c: 3, a: 1}
>>> f(1,1,2,3,4,a=1,b=2,c=3) # 与上面效果一样

 

 

调用时

def func(a,b,c,d):
    print(a,b,c,d)

args = (1,2,3,4)
func(*args)
1,2,3,4

def func(a,b,c,d):
    print(a,b,c,d)

kargs = {a:1, b:2, c:3, d:4}
func(**kargs)
1,2,3,4

 

python的*args与**kwargs

标签:AC   *args   ast   字典   erro   ror   错误   font   允许   

原文地址:https://www.cnblogs.com/cymwill/p/8593180.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!