ホームページ > バックエンド開発 > Python チュートリアル > 一重および二重アスタリスク (*) は Python 関数の引数をどのように展開しますか?

一重および二重アスタリスク (*) は Python 関数の引数をどのように展開しますか?

DDD
リリース: 2024-12-20 11:08:09
オリジナル
648 人が閲覧しました

How Do Single and Double Asterisks (*) Unpack Arguments in Python Functions?

(二重星/アスタリスク) を使用した Python での引数のアンパック*

Python では、 * 演算子は、呼び出し時に引数をアンパックする際に重要な役割を果たします。関数。

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

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

以下のコードは * を使用してタプル値を展開します:

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

これは次のように記述するのと同じです:

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

ダブルスター **:
ダブルスター (**) は、以下に対して同様の操作を実行します。名前付き引数の値を提供する辞書。次の関数について考えてみましょう。

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

** を使用して辞書の値 2 を解凍すると、次の結果が得られます。

values2 = { 'c': 10, 'd': 15 }
s = add(**values2)
ログイン後にコピー

これは、

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

と同等です。 の組み合わせ:*
両方* は、同じ関数呼び出しで同時に使用できます。例:

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

これは次と同等です:

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

パラメータのアンパック:
引数のアンパックに加えて、* 関数内のパラメータのアンパックにも使用できます定義。

  • * でマークされたパラメータは、任意の数の位置引数をタプルとして受け取ります。
  • ** でマークされたパラメータは、すべてのキーワード引数を辞書として受け取ります。

例:

def add(*values):
    # ...

def get_a(**values):
    # ...
ログイン後にコピー

パフォーマンス影響:
* の使用によるパフォーマンスへの影響は、一般に最小限です。アンパック操作に伴うオーバーヘッドは最小限であり、関数自体の効率には影響しません。ただし、過剰な解凍はコードの読みやすさや保守性を低下させる可能性があります。

以上が一重および二重アスタリスク (*) は Python 関数の引数をどのように展開しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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