引数をタプルとして受け取る

入門Python3 4.7.4


関数を定義する時に引数の前に*をつけると引数をタプル化して受け取れるようになります。

def foo(*args):
    print(args)

foo()
foo("a","b","c")
$ py main.py
()
('a', 'b', 'c')

これはCの可変長引数のような、もしくはC#のparamsキーワードのような機能ですね。

また通常の引数と混ぜて使うことも出来ます、ただしその場合タプル化できるのは最後の変数のみです。

def foo(a,b,c,*args):
    print(a,b,c)
    print(args)

foo(1,2,3,"a","b","c")
$ py main.py
1 2 3
('a', 'b', 'c')

ちなみにタプル化する変数名はPythonの慣習的にargsと名付けるのが一般的のようです。