関数の引数いろいろ

キーワード引数

>>> 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'