関数に与える引数の展開
関数に与える引数にアスタリスクを付けることによって
引数を展開させることができるみたい。
例えば、datetimeモジュールのdateという関数はdate(year, month, day)
のように3つの引数を必要とする。
また、timeモジュールのstrptimeという関数はstrptime(string, format)
のように使って、
>>> import time >>> time.strptime('20080801', '%Y%m%d') (2008, 8, 1, 0, 0, 0, 4, 214, -1)
のようにタプルを返してくる。
そこで、strptime関数の戻り値の最初の3つをdate関数に渡そうとして、
単純に渡すと
>>> import datetime >>> import time >>> datetime.date(time.strptime('20080801', '%Y%m%d')[:3]) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: function takes exactly 3 arguments (1 given)
のようにエラーになる。
そこでアスタリスクを付けて渡すと、
>>> datetime.date(*time.strptime('20080801', '%Y%m%d')[:3]) datetime.date(2008, 8, 1)
のようにうまくいく。
アスタリスクを付けて渡すことで引数に展開されるらしい。