まくまくPythonノート
可変長引数を扱う
2014-06-02

関数で可変長引数を扱えるようにするには、下記のようにパラメータ名のプレフィックスとしてアスタリスク (*) を付けます。

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)  # タプルやディクショナリは展開して渡す
2014-06-02