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 !