23

次のようなメソッド定義があるとしましょう。

def myMethod(a, b, c, d, e)

次に、次のような変数とタプルがあります。

myVariable = 1
myTuple = (2, 3, 4, 5)

タプルをパス分解して、そのメンバーをパラメーターとして渡す方法はありますか?このようなもの(タプル全体が2番目のパラメーターと見なされるため、これは機能しないことはわかっていますが):

myMethod(myVariable, myTuple)

可能であれば、各タプルメンバーを個別に参照することは避けたいです...

4

2 に答える 2

43

あなたは引数の解凍演算子を探しています*

myMethod(myVariable, *myTuple)
于 2010-07-07T19:39:26.227 に答える
7

Pythonのドキュメントから:

逆の状況は、引数が既にリストまたはタプルにあるが、個別の位置引数を必要とする関数呼び出しのためにアンパックする必要がある場合に発生します。たとえば、組み込みの range() 関数は、別個の開始引数と停止引数を想定しています。それらが個別に利用できない場合は、 *-operator を使用して関数呼び出しを記述し、リストまたはタプルから引数をアンパックします。

>>> range(3, 6)             # normal call with separate arguments
[3, 4, 5]
>>> args = [3, 6]
>>> range(*args)            # call with arguments unpacked from a list
[3, 4, 5]

同様に、辞書は **- 演算子を使用してキーワード引数を渡すことができます。

>>> 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 !
于 2010-07-07T19:46:43.693 に答える