Python 如何分解元组,使其可以作为参数列表传递?

Python 如何分解元组,使其可以作为参数列表传递?,python,parameters,tuples,iterable-unpacking,Python,Parameters,Tuples,Iterable Unpacking,假设我有这样一个方法定义: def myMethod(a, b, c, d, e) myVariable = 1 myTuple = (2, 3, 4, 5) 然后,我有一个变量和一个元组,如下所示: def myMethod(a, b, c, d, e) myVariable = 1 myTuple = (2, 3, 4, 5) 是否有一种方法可以传递分解元组,以便将其成员作为参数传递?类似这样的情况(尽管我知道这不起作用,因为整个元组被视为第二个参数): 如果可能,我希望避免单独引用

假设我有这样一个方法定义:

def myMethod(a, b, c, d, e)
myVariable = 1
myTuple = (2, 3, 4, 5)
然后,我有一个变量和一个元组,如下所示:

def myMethod(a, b, c, d, e)
myVariable = 1
myTuple = (2, 3, 4, 5)
是否有一种方法可以传递分解元组,以便将其成员作为参数传递?类似这样的情况(尽管我知道这不起作用,因为整个元组被视为第二个参数):

如果可能,我希望避免单独引用每个元组成员…

您正在查找运算符
*

myMethod(myVariable, *myTuple)
从:

相反的情况发生在 参数已在列表或列表中 元组,但需要为 需要单独调用的函数调用 位置参数。例如, 内置的range()函数需要 分开开始和停止参数。如果 它们不能单独提供, 使用 *-运算符将参数从列表或元组中解包:

同样,字典也可以 使用 **-接线员:


很好,谢谢!(我想我读过一个方法……虽然对Python来说还是很新,但不知道如何搜索。)@froadie:对,过去有一个函数叫做
apply
,它可以与星形和双星运算符起到相同的作用。但是
apply
被弃用,取而代之的是*和**。(请参阅)也适用于iterables,这与手册中的规定相矛盾,手册中规定它必须是一个序列
>>> def parrot(voltage, state='a stiff', action='voom'):
...     print "-- This parrot wouldn't", action,
...     print "if you put", voltage, "volts through it.",
...     print "E's", state, "!"
...
>>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"}
>>> parrot(**d)
-- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised !