可変長引数とは
可変長引数とは、名前の通り長さが可変な引数である。要するに引数が固定ではなく、任意の個数を受け取ることができる。これだけではわかりかねると思うので、実際のコードを例に見ていこう。
*args
def main(*args):
print(args)
main(1, "one", ["one", "two"], {"one", "two"})
# 実行結果 -> (1, 'one', ['one', 'two'], {'two', 'one'})
*args
は任意の数の引数を受け取り、その内容をargs
という*
(アスタリスク)を外した形でアクセスすると受け取った引数をタプル型で展開してくれる。*
以降は任意の文字列でもよいが、特別な理由がなければ*args
とする場合が多い。
**kwargs
def main(**kwargs):
print(kwargs)
main(int=1, str="one", list=["one", "two"], dict={"one", "two"})
# 実行結果 -> {'int': 1, 'str': 'one', 'list': ['one', 'two'], 'dict': {'one', 'two'}}
**kwargs
は任意の数のキーワード引数を受け取り、その内容をkwargs
という**
(アスタリスクx2)を外した形でアクセスすると受け取った引数を辞書型で展開してくれる。こちらも**
特別な理由がなければ**kwargs
とする場合が多い。
実際の例
これらの可変長引数の実例を見たい場合は、Pythonのサードパーティー製のライブラリがオススメ。特にHTTPリクエスト関連でよく使うrequests
はコードリーディングをするのに最適なので、是非一度読んでみることをオススメする。
Github(psf/requests) -> https://github.com/psf/requests/tree/master/requests