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
でいいかと。。。