ホームページ >バックエンド開発 >Python チュートリアル >一重スター演算子と二重スター演算子 (*) と () は、Python 関数定義の変数引数をどのように処理しますか?

一重スター演算子と二重スター演算子 (*) と () は、Python 関数定義の変数引数をどのように処理しますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-24 16:57:10777ブラウズ

How Do Single and Double Star Operators (*) and () Handle Variable Arguments in Python Function Definitions?

パラメータのアンパック: 関数定義の *

Python の関数定義では、 (スター) および * (二重星) 演算子は、さまざまな数のargument.

シングルスター演算子 (*)

演算子 (「var-args」または「splat」とも呼ばれます) は、渡されたすべての位置引数を収集します関数を args というタプルに変換します。たとえば、以下の定義では:

def foo(x, y, *args):
    pass

args が foo(1, 2, 3, 4, 5) で呼び出された場合、args タプル(3, 4, 5) が含まれます。

ダブルスター演算子()**

演算子 (「var-kwargs」または「キーワード スプラット」とも呼ばれる) は、すべてのキーワード引数を kwargs** という名前の辞書として取得します。次の定義では:

def bar(x, y, **kwargs):
    pass

bar が bar(1, 2, name='Alice', age=30) で呼び出されるとき、kwargs辞書には {'name': 'Alice', 'age': が含まれます。 30}.

標準引数と可変引数の混合

関数定義は、* を使用して通常の引数と可変引数を組み合わせることができます:

def foo(kind, *args, bar=None, **kwargs):
    pass

で呼び出された場合foo(123, 'a', 'b', apple='red')、変数'kind'、'args'、'bar'、および 'kwargs' には次が含まれます:

  • kind = 123
  • args = ('a', 'b')
  • バー =なし
  • kwargs = {'apple': 'red'}

引数リストのアンパック

*: アンパックにも使用できます呼び出し時の引数リスト関数:

def foo(bar, lee):
    pass

baz = [1, 2]

foo(*baz) # Unpacks baz into [1, 2] for bar and lee

拡張反復可能アンパック (Python 3)

Python 3 では、代入の左側で *l を使用して反復可能をアンパックできます。複数の変数:

first, *rest = [1, 2, 3, 4] # first = 1, rest = [2, 3, 4]

キーワードのみの引数(Python 3)

Python 3 では キーワードのみの引数 が導入されています。* 以降はキーワード引数のみが許可されます:

def func(arg1, arg2, arg3, *, kwarg1, kwarg2):
    pass

以上が一重スター演算子と二重スター演算子 (*) と () は、Python 関数定義の変数引数をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。