ホームページ >バックエンド開発 >Python チュートリアル >*args と kwargs は Python 関数の定義と呼び出しでどのように機能しますか?
Python 関数の
Python では、* (二重星/アスタリスク) と (星) /アスタリスク) 関数定義および呼び出しにおける表記は、変数の処理において重要な役割を果たします。 argument.
構文
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
同様に、構文
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 以降では、関数定義で位置のみのパラメーターを指定できます。 * 通常のパラメータの前の表記:
def func(arg1, arg2, arg3, *, kwarg1, kwarg2): pass
この関数は 3 つの位置引数と追加の引数のみを受け入れることができますキーワード引数として渡す必要があります。
Python 3.6 以降では、キーワード引数の順序は kwargs ディクショナリに保存されます。これは、関数に渡される引数の順序を維持する必要がある場合など、特定のシナリオで役立ちます。
以上が*args と kwargs は Python 関数の定義と呼び出しでどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。