*args と **kwargs は何を意味しますか? [重複] 質問する

*args と **kwargs は何を意味しますか? [重複] 質問する

正確には何を意味して*args**kwargsますか?

Python のドキュメントによると、引数のタプルを渡すようです。

def foo(hello, *args):
    print(hello)

    for each in args:
        print(each)

if __name__ == '__main__':
    foo("LOVE", ["lol", "lololol"])

次のように出力されます:

LOVE
['lol', 'lololol']

どのように効果的に活用しますか?

ベストアンサー1

関数定義の引数リストの最後の項目として*argsand/orを配置すると、その関数は任意の数の引数および/またはキーワード引数を受け入れることができます。**kwargs

たとえば、引数の数に関係なく、すべての引数の合計を返す関数を記述したい場合は、次のように記述できます。

def my_sum(*args):
    return sum(args)

これはおそらく、オブジェクト指向プログラミングで、関数をオーバーライドし、ユーザーが渡した引数を使用して元の関数を呼び出す場合によく使用されます。

args実際にとを呼び出す必要はありませんkwargs。これは単なる慣例です。***が魔法のような働きをします。

公式のPythonドキュメントにはより詳細な見方

おすすめ記事