ホームページ > バックエンド開発 > Python チュートリアル > Python 関数呼び出しで * と unpack 引数をどのように実行するのでしょうか?

Python 関数呼び出しで * と unpack 引数をどのように実行するのでしょうか?

DDD
リリース: 2024-12-22 09:01:13
オリジナル
355 人が閲覧しました

How Do * and  Unpack Arguments in Python Function Calls?

Python 関数呼び出しでの による引数のアンパック*

Python 関数呼び出しでは、アスタリスク ( ) および二重アスタリスク (*) 演算子は、解凍において重要な役割を果たします。シーケンスと辞書をそれぞれ位置引数または名前付き引数に変換します。

単一スター (*) アンパック:

単一のアスタリスク演算子 (*) は、シーケンスまたはコレクションを位置引数にアンパックします。引数。次の関数について考えてみましょう:

def add(a, b):
    return a + b
ログイン後にコピー

値のタプル value = (1, 2) が与えられた場合、* 演算子を使用してタプルを解凍し、その要素を add 関数に渡すことができます:

s = add(*values)
ログイン後にコピー

これは、

s = add(1, 2)
ログイン後にコピー

Double Star と書くのと同じです。 () 解凍:**

二重アスタリスク演算子 (**) も同様の原理に従いますが、辞書を操作します。辞書のキーと値のペアを名前付き引数に解凍します:

values = { 'a': 1, 'b': 2 }
s = add(**values)
ログイン後にコピー

これは次と同等です:

s = add(a=1, b=2)
ログイン後にコピー

結合アンパック:

両方の演算子を 1 つの関数呼び出しで同時に使用できます。たとえば、関数:

def sum(a, b, c, d):
    return a + b + c + d
ログイン後にコピー

と 2 つの値のセット:

values1 = (1, 2)
values2 = { 'c': 10, 'd': 15 }
ログイン後にコピー

がある場合、これらの値は次のように展開できます:

s = add(*values1, **values2)
ログイン後にコピー

これは次のようになります。同等:

s = sum(1, 2, c=10, d=15)
ログイン後にコピー

パフォーマンス影響:

および * 解凍演算子を使用すると、通常、パフォーマンスへの影響は最小限になります。ただし、アンパックされるシーケンスまたは辞書が大きい場合は、アンパック処理中に追加のオーバーヘッドが発生する可能性があります。これは、ほとんどの実際的なシナリオでは無視できます。

同等の方法:

アンパック演算子を使用する代わりに、*args および **kwargs 構文を使用することもできます。 、それぞれ:

def add(*args, **kwargs):
    s = 0
    for arg in args:
        s += arg
    for key, value in kwargs.items():
        s += value
ログイン後にコピー

最終的には、アンパック演算子を使用するか、または*args/**kwargs はコードのスタイルと設定によって異なります。

以上がPython 関数呼び出しで * と unpack 引数をどのように実行するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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