argsとkwargs
PythonでDjangoなどのフレームワークを使っていると、関数やクラスの引数にargsとkwargsがよく出てくる。改めてまとめてみる。
kwargsがある場合とない場合でどう違うか?
以下のような関数があったとする。
def some_function(arg1, arg2):
print(arg1, arg2)
この場合、some_functionを呼び出す際には、arg1とarg2の2つの引数を指定する必要がある。例えば、以下のようにして呼び出すことができる。
some_function(10, 20)
しかし、この関数にkwargsを追加すると、任意の数のキーワード引数を指定することができる。例えば、以下のようにして呼び出すことができる。
some_function(10, 20, key1="value1", key2="value2")
この場合、key1とkey2はキーワード引数であり、arg1とarg2とは別の引数として扱われます。しかし、kwargsがない場合は、キーワード引数を指定することができないため、上記のような呼び出し方はできません。
また、kwargsがある場合は、kwargsに指定されたキーワード引数を辞書として受け取ることができます。このため、kwargsを使用すると、可変長のキーワード引数を取り扱うことができます。
kwargs はkwのように任意の文字列に置き換えられる。が、混乱を招くかもなので、kwargsでいいかと。。。