ホームページ >バックエンド開発 >Python チュートリアル >Python の *args と kwargs は関数パラメータをどのように処理しますか?
Python 関数の と を使用したパラメータのアンパック*
Python 関数の と * 構文によりパラメータの柔軟性が向上します処理。
位置引数のアンパック (kwargs)
*args パラメーターは、すべての位置引数をタプルとして収集します。例:
def foo(x, y, *args): for a in args: print(a)
foo(1, 2, 3) を呼び出すと次のように出力されます:
1 2 3
キーワード引数のアンパック (kwargs)
**kwargs パラメータは、すべてのキーワード引数を 辞書。例:
def bar(x, y, **kwargs): for k, v in kwargs.items(): print(k, v)
bar(x=1, y=2, name='John') を呼び出すと次のように出力されます:
name John
Combined Unpacking
両方のイディオムを組み合わせて、固定引数と可変引数を混在させることができます。例:
def foo(kind, *args, bar=None, **kwargs): print(kind, args, bar, kwargs)
foo(123, 'a', 'b', apple='red') を呼び出すと、次のように出力されます:
123 ('a', 'b') None {'apple': 'red'}
逆に、kwargs は次のようになります。関数呼び出しのキーワード引数を解凍するために使用されます。例:
def foo(a, b, c): print(a, b, c) obj = {'b':10, 'c':'lee'} foo(100, **obj) # Prints 100 10 lee
*
によるリストとタプルのアンパック 関数を呼び出すときに、* 構文を使用してリストとタプルをアンパックすることもできます。例:
def foo(bar, lee): print(bar, lee) baz = [1, 2] foo(*baz) # Prints 1 2
拡張反復可能アンパック
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 サイトの他の関連記事を参照してください。