ホームページ >バックエンド開発 >Python チュートリアル >*args と kwargs は Python 関数の定義と呼び出しでどのように機能しますか?

*args と kwargs は Python 関数の定義と呼び出しでどのように機能しますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-26 05:17:12794ブラウズ

Python 関数の

How do *args and kwargs Work in Python Function Definitions and Calls?

* および パラメーター

Python では、* (二重星/アスタリスク) と (星) /アスタリスク) 関数定義および呼び出しにおける表記は、変数の処理において重要な役割を果たします。 argument.

**kwargs

構文

def foo(x, y, **kwargs):
    pass

は、関数 foo が任意の数のキーワード引数を受け入れることができることを示します。これらのキーワード引数は、kwargs という名前の辞書に集められます。例:

def bar(**kwargs):
    for a in kwargs:
        print(a, kwargs[a])

# Call the function
bar(name='one', age=27)
# Output:
# name one
# age 27

*args

同様に、構文

def foo(x, y, *args):
    pass

を使用すると、関数 foo が任意の数の位置引数を受け入れることができます。これらの引数は、args という名前のタプルに収集されます。

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

# Call the function
foo(1)
# Output: 1

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

* の組み合わせ

*kwargs と args は両方とも一緒に使用できます。固定引数と可変引数の両方を許可します。例:

def foo(kind, *args, bar=None, **kwargs):
    print(kind, args, bar, kwargs)

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

拡張反復可能アンパック

* 表記は、関数呼び出し時に引数リストをアンパックするために使用することもできます。例:

def foo(bar, lee):
    print(bar, lee)

# Create a list
baz = [1, 2]

# Call the function using unpacking
foo(*baz)
# Output: 1 2

注: 位置のみのパラメーター (Python 3.8 )

Python 3.8 以降では、関数定義で位置のみのパラメーターを指定できます。 * 通常のパラメータの前の表記:

def func(arg1, arg2, arg3, *, kwarg1, kwarg2):
    pass

この関数は 3 つの位置引数と追加の引数のみを受け入れることができますキーワード引数として渡す必要があります。

kwargs の挿入順序

Python 3.6 以降では、キーワード引数の順序は kwargs ディクショナリに保存されます。これは、関数に渡される引数の順序を維持する必要がある場合など、特定のシナリオで役立ちます。

以上が*args と kwargs は Python 関数の定義と呼び出しでどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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