def foo(a, b, c):
print a+b+c
i = [1,2,3]
i に明示的なインデックスを付けずに foo(i) を呼び出す方法はありますか? foo(i[0], i[1], i[2]) を回避しようとしています
def foo(a, b, c):
print a+b+c
i = [1,2,3]
i に明示的なインデックスを付けずに foo(i) を呼び出す方法はありますか? foo(i[0], i[1], i[2]) を回避しようとしています
はい、使用します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'}
はい、Python は以下をサポートしています。
foo(*i)
Unpacking Argument Listsのドキュメントを参照してください。反復可能なものなら何でも動作します。星が 2 つ**
あると、dict と名前付き引数で機能します。
def bar(a, b, c):
return a * b * c
j = {'a': 5, 'b': 3, 'c': 2}
bar(**j)