def foo(a, b, c):
print a+b+c
i = [1,2,3]
有没有办法在 i 上不显式索引的情况下调用 foo(i)?试图避免 foo(i[0], i[1], i[2])
def foo(a, b, c):
print a+b+c
i = [1,2,3]
有没有办法在 i 上不显式索引的情况下调用 foo(i)?试图避免 foo(i[0], i[1], i[2])
是的,使用foo(*i)
:
>>> foo(*i)
6
您还可以*
在函数定义中使用:
def foo(*vargs)
将所有非关键字参数放入一个名为vargs
. 并且使用**
, 例如def foo(**kargs)
, 会将所有关键字参数放入一个名为 的字典中kargs
:
>>> def foo(*vargs, **kargs):
print vargs
print kargs
>>> foo(1, 2, 3, a="A", b="B")
(1, 2, 3)
{'a': 'A', 'b': 'B'}
是的,Python 支持:
foo(*i)
请参阅Unpacking Argument Lists的文档。适用于任何可迭代的东西。有两颗星**
,它适用于 dicts 和命名参数。
def bar(a, b, c):
return a * b * c
j = {'a': 5, 'b': 3, 'c': 2}
bar(**j)