関数で可変長引数を扱えるようにするには、下記のようにパラメータ名のプレフィックスとしてアスタリスク (*
) を付けます。
def foo(*args, **kwargs):
print(args, kwargs)
アスタリスクが1つの場合 (*args
) は可変長引数のタプル、2つの場合 (**kwargs
) は名前付き引数のディクショナリを参照するためのパラメータとなります。
foo(1, 2, 3, aaa=4, bbb=5)
(1, 2, 3) {'aaa': 4, 'bbb': 5}
可変長引数として受け取ったタプルやディクショナリを、可変長引数を受け取る別の関数に渡すときは、一度展開して渡す必要があります。
変数の参照時に *
や **
をつけると展開できます。
def foo(*args, **kwargs):
print(args, kwargs)
def bar(*args, **kwargs):
foo(*args, **kwargs) # タプルやディクショナリは展開して渡す