[python]*args、**kwargs。可変の引数を使ってみる
Pythonでコードを見ている時に*argsや**kwargsが登場しますが、おさらいを兼ねてまとめます。
可変引数とは?
*argsや**kwargsはいわゆる可変長引数と呼ばれるもので、どんな引数の数にも対応した関数を定義することができます。
*argsでは位置引数をタプルにまとめてセットできます。
**kwargsではキーワード引数を辞書にまとめてセットできます。
なお、*や**の後の文字にargsやkwargsが定義されていますが、*以降の文字は好きなもので構いません。
Pythonの慣習として*argsや**kwargsと記述されているようです。
argument = 引数という意味なので、分かりやすいと思います。
*argsを使ってみる
複数の引数を取り、それぞれを出力するコードを書いてみます。
def greet(*args): for arg in args: print(arg) greet('hello', 'buon giorno', 'こんにちは') => hello buon giorno こんにちは
複数の引数をタプルで取り、それを関数内でforループしています。
引数でそのまま文字列を渡していますが、変数にするとこんな感じ。
english = 'hello' italy = 'buon giorno' japanese = 'こんにちは' def greet(*args): for arg in args: print(arg) greet(english, italy, japanese)
**kwargsを使ってみる
次に**kwargsについて。こちらは可変長引数の辞書バージョンです。
def greet(**kwargs): print(kwargs) greet(english='hello', italy='buon giorno', japanese='こんにちは') => {'english': 'hello', 'italy': 'buon giorno', 'japanese': 'こんにちは'}