ホームページ > バックエンド開発 > Python チュートリアル > Python の *args と kwargs は関数パラメータをどのように処理しますか?

Python の *args と kwargs は関数パラメータをどのように処理しますか?

Mary-Kate Olsen
リリース: 2024-12-22 15:41:11
オリジナル
772 人が閲覧しました

How Does Python's *args and kwargs Handle Function Parameters?

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

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