関数の引数いろいろ
キーワード引数
>>> def f1(a, b): print a, b >>> f1(1, 2) 1 2 >>> f1(b=1, a=2) 2 1 >>>
可変長引数をタプルや辞書で受け取る
>>> def f2(a, *b, **c): print a, b, c >>> f2(1, 2, 3, d=4, e=5) 1 (2, 3) {'e': 5, 'd': 4}
- 先頭の引数 1 は a に格納されました。
- 名前無しで渡された余分な引数 2 と 3 は、タプルとして *b に格納されました
- 名前付きで渡された余分な引数 d=4 と e=5 は、辞書として **c に格納されました
ふーん。なるほど。名前付きの引数が名前無しの引数の前だとダメみたいです。
>>> f2(1, d=2, 3, 4, e=5) SyntaxError: non-keyword arg after keyword arg
あと、辞書に入れるつもりが、うっかり仮引数の名前とかぶってしまうとダメですね。
>>> f2(1, 2, 3, a=4, e=5) Traceback (most recent call last): File "<pyshell#21>", line 1, in -toplevel- f2(1, 2, 3, a=4, e=5) TypeError: f2() got multiple values for keyword argument 'a'