ホームページ >バックエンド開発 >Python チュートリアル >Python 関数パラメータの `*args` と `kwargs` の違いは何ですか?

Python 関数パラメータの `*args` と `kwargs` の違いは何ですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-29 03:18:18135ブラウズ

What's the Difference Between `*args` and `kwargs` in Python Function Parameters?

関数パラメータにおける (ダブルスター) と (スター) の重要性を明らかにする*

Python では、関数args と *kwargs で示されるパラメータは、さまざまなメカニズムとして機能します。任意の引数に対応します。

*args による位置引数のアンパック

*args パラメーターは、事前定義された位置引数を超えるすべての位置引数をタプルに集めます。例:

def foo(*args):
    for arg in args:
        print(arg)

この関数は、次のような任意の数の位置引数を受け入れることができます。

foo(1)  # Output: 1
foo(1, 2, 3)  # Output: 1 2 3

kwargs**

一方、**kwargs はすべてのキーワード引数をDictionary.

def bar(**kwargs):
    for key, value in kwargs.items():
        print(key, value)
キーワード引数を指定してこの関数を呼び出すと、次の結果が得られます:

bar(name='John', age=30)  # Output: name John, age 30

args と kwargs*

両方のイディオムを組み合わせて、固定と可変を混在させることができます引数:

def foo(kind, *args, bar=None, **kwargs):
    print(kind, args, bar, kwargs)
この関数は次のように呼び出すことができます:

foo(123, 'a', 'b', apple='red')  # Output: 123 ('a', 'b') None {'apple': 'red'}

追加の使用例

  • 解凍引数リスト: * イディオムは、呼び出し時に引数リストを展開するために使用できます。 function:
def foo(bar, lee):
    print(bar, lee)

baz = [1, 2]
foo(*baz)  # Output: 1 2
  • Extended Iterable Unpacking (Python 3 ): * リストを取得するために代入の左側で使用できます:
first, *rest = [1, 2, 3, 4]
# first = 1
# rest = [2, 3, 4]
  • キーワードのみの引数(Python 3 ): 関数は、次の構文を使用してキーワード引数を制限できます:
def func(arg1, arg2, arg3, *, kwarg1, kwarg2):
    pass
この関数には、3 つの位置引数と * の後に任意の数のキーワード引数が必要です。

以上がPython 関数パラメータの `*args` と `kwargs` の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。