Pythonでは、*args
と**kwargs
は特別なパラメータで、関数に可変数の引数やキーワード引数を渡すことができます。
*args
は余分な位置引数をタプルとして収集し、**kwargs
は余分なキーワード引数を辞書として収集します。
例えば、すべての引数の合計を返す関数を書きたい場合、どのように供給されるかに関係なく、次のように書くことができます。
def my_sum(*args):
return sum(args)
これは、オブジェクト指向プログラミングでよく使われます。例えば、関数をオーバーライドして、ユーザーが渡す任意の引数で元の関数を呼び出したい場合などです。
実際には、args
とkwargs
と呼ばなくても構いません。それはただの慣習です。*
と**
が魔法を起こします。
公式のPythonドキュメンテーションでは、より詳細な説明があります。
また、*args
と**kwargs
は、関数定義の引数リストの最後の項目として置くことで、その関数が任意の数の引数と/またはキーワード引数を受け入れることを可能にします。
これらの特性を理解することで、Pythonの関数定義と呼び出しにおける柔軟性とパワーを最大限に活用することができます。