2012-12-15 1 views
5
def foo(a, b, c): 
print a+b+c 

i = [1,2,3] 

私は明示的なインデックスなしでfoo(i)を呼び出す方法はありますか? はFOOを避けるためにしよう(私は、[0]、私は[1]、私は[2])関数の引数よりもリストを爆発させる方法がありますか?

+0

何度も関数定義で使用されていますので、呼び出すときに使用してください...私のpython head guysを元に戻していただきありがとうございます。 – rutherford

答えて

9

はい、foo(*i)を使用します。

>>> foo(*i) 
6 

また、関数定義で*を使用することができます。 def foo(*vargs)vargsと呼ばれるタプルにすべての非キーワード引数を置きます。 。 および例えばため**の使用、def foo(**kargs)は、kargsと呼ばれる辞書にすべてのキーワード引数を置く:

>>> def foo(*vargs, **kargs): 
     print vargs 
     print kargs 

>>> foo(1, 2, 3, a="A", b="B") 
(1, 2, 3) 
{'a': 'A', 'b': 'B'} 
3

はい、Pythonがあることをサポートしています。

foo(*i) 

Unpacking Argument Lists上のドキュメントを参照してください。反復可能なもので動作します。 2つの星で**それはdictsと名前付き引数のために働く。

def bar(a, b, c): 
    return a * b * c 
j = {'a': 5, 'b': 3, 'c': 2} 

bar(**j) 
4

それはargument unpackingと呼ばれ、そのための作業がありますです。

foo(*i) 

ちなみに、それはリストだけでなく、どんなイテラブルでも動作します。

+0

+1ゲームの名前を削除します。実際には、これはどんな言語でもこのことをGoogleに助けます。どうもありがとう。 –

関連する問題