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

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

Barbara Streisand
リリース: 2024-12-29 03:18:18
オリジナル
178 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート