2017-10-17 34 views
2

タプル(または多分リスト)を値のシーケンス(引数)として関数に渡したいと思っています。タプルは引数として* argに展開されます。* argsにタプルを渡す

def func(*args): 
    for i in args: 
     print "i = ", i 

func('a', 'b', 3, 'something') 

しかし、私がやりたいことはこれです:

例えば、これは明らかである

tup = ('a1', 'a2', 4, 'something-else') 
func(tup) 

そして、これが最初の場合と同様に振る舞うべきです。 私はここで再版と評価を使うべきだと思いますが、正確にどのように正確かはわかりません。

私は関数のタプルを渡して、本体内で解凍することができますが、私の質問は関数呼び出し自体で解凍する方法です。

+6

'func(* tup)'を使用してください。 –

答えて

1

ファンクションを呼び出すときにタプルを直接展開するには、func(*tup)を使用します。

>>> func(*tup) 
i = a1 
i = a2 
i = 4 
i = something-else 

これはfunc(tup[0], tup[1], tup[2], ...)と同等の一種です。関数が複数の個々のパラメータを期待する場合も同じことが成り立ちます:

構文の詳細については、hereを参照してください。

0

タプルの識別子の前に*を入れることで、コール中にタプルをアンパックすることができます。これにより、アンパックする必要のあるタプルとタプルしないタプルを簡単に区別することができます。これは例です:

>>> MyTuple = ('one', 2, [3]) 
>>> 
>>> def func(*args): 
... for arg in args: 
... print(arg) 
... 
>>> 
>>> func(*MyTuple) 
one 
2 
[3] 
>>> 
>>> func(MyTuple) 
('one', 2, [3]) 
関連する問題