Python 3:从元组中展开参数

时间:2012-09-18 10:46:14

标签: python arguments tuples

给定一个Python元组t = v1, v2, v3是否有一个实用程序来解压缩这些,以便给出:

def foo(v1,v2,v3): pass

而不是:

foo(t[0],t[1],t[2])

你可以这样做:

foo(unpack(t))

我想知道任何可用于元组和/或列表的实用程序。

真诚的谢谢。

3 个答案:

答案 0 :(得分:17)

是的。您可以使用解包运算符('*'

foo(*t)

请注意,如果t是listtuple,甚至是生成器

,则此方法有效

有一种类似的方法可以在映射对象(通常是字典)上使用**运算符将参数传递给带有关键字的函数:

def foo(key=None,foo=None):
    pass #...

foo(**{key:1,foo:2})

答案 1 :(得分:2)

Unpack参数列表:

foo(*(v1, v2, v3))

答案 2 :(得分:1)

使用*args参数传递:

foo(*t)

演示:

>>> def foo(v1, v2, v3):
...     print(v1, v2, v3)
...
>>> t = 1, 2, 3
>>> foo(*t)
1 2 3