有没有更符合Python风格的方法来将列表展开到函数的参数中?

7
def foo(a, b, c):
 print a+b+c

i = [1,2,3]

是否有一种方法可以在不显式索引i的情况下调用foo(i)? 试图避免使用foo(i[0], i[1], i[2])


在函数定义中使用多次,那么在调用时为什么不使用它呢...感谢大家帮我解决了Python的问题。 - blippy
3个回答

11

可以使用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'}

4

这是被称为参数拆分,并且有一个专门的运算符可用。

foo(*i)

顺便说一下,它适用于任何可迭代对象,而不仅仅是列表。


+1,如果能提供游戏名称的话会更好。这样可以帮助在任何语言下使用谷歌搜索。非常感谢。 - Matt Bannert

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接