タプルを引数に展開する

結論から言うと、次のようにすればできる

>>> def sum(a, b, c):

... return a + b + c

...

>>> sum(*(1, 2, 3))

6

先頭にアスタリスクつけたらいいらしい

タプルだけじゃなくて、リストとかセットでもできる

>>> sum(*[1, 2, 3])

6

>>> sum(*{1, 2, 3})

6

 

辞書もできるけど、キーだけが渡される

>>> sum(*{'a': 1, 'b': 2, 'c': 3})

6

値を渡したい場合は、アスタリスクを二つ並べる。

>>> sum(**{'a': 1, 'b': 2, 'c': 3}) 

6

並べ替えても問題ないけれど、変なキーが混ざってたら落ちます。

>>> sum(**{'a': 1, 'b': 2, 'c': 3}) 

6

>>> sum(**{'b': 2, 'c': 3', 'a': 1})

6

>>> sum(**{'a': 1, 'b': 2, 'c': 3, 'd': 5})  

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: sum() got an unexpected keyword argument 'd'

 

今回参考にしたページ