と (二重星/アスタリスク) を使用した 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 サイトの他の関連記事を参照してください。