ホームページ  >  記事  >  バックエンド開発  >  Python での ** および * パラメータの用途は何ですか?

Python での ** および * パラメータの用途は何ですか?

silencement
silencementオリジナル
2019-05-23 14:52:474951ブラウズ

Python では、「**」パラメータは、ここで任意の数のキーワード パラメータが受け入れられることを示します。これらのパラメータは辞書の形式で保存され、辞書として解釈されます。「*」パラメータ複数の非キーワード パラメータの場合、これらのパラメータは配列の形式で保存され、タプルとして解釈されます。

Python での ** および * パラメータの用途は何ですか?

Python のパラメータ受け渡しメカニズムには、値受け渡し (int、float などの値データ型) と参照受け渡し (次のような非値オブジェクト データ型) があります。 2 つの基本的な仕組みと、便利なキーワード転送機能 (関数の仮パラメータ名を直接使用して、実パラメータの転送対象を指定します。たとえば、関数は def f(a,b) のように定義されます。 ,c) の場合、 f( b=1,c=2,a=3 を呼び出すときに使用できます) は、仮パラメータと実パラメータの間の位置的な対応にこだわる必要がなく、仮パラメータ ターゲットの転送方法を指定します。 C 言語) さらに、Python ではラッピング メソッドのパラメータ受け渡しも可能で、これにより、パラメータの数とタイプが不確実な関数呼び出しの基礎が提供されます。

例: def f(*a,**b)、ラップされたパラメーター転送の実装では、関数を定義するときに仮パラメーターの前に * または ** を追加し、仮パラメーターに対応します。 * (上記の a など) はタプルとして解釈され、** に対応する仮パラメータ (上記の b など) は辞書として解釈されます。呼び出し中の特定のパラメータ転送については、次のコードを参照してください。

Python での ** および * パラメータの用途は何ですか?

上記のコードを実行した結果は次のようになります:

(3, 4)
{'n': 2, 'm': 1 }
さまざまな変数について、キーワードを使用して渡された変数はタプルの一部として *a に渡され、キーワードを使用して渡された変数は辞書の一部として **b に渡されることがわかります。 #同時に、注意が必要な場所があります。Python では、キーワード以外で渡される変数はキーワードで渡される変数の前に記述する必要があると規定しているため、* と ** を一緒に使用する場合は、* 仮パラメータを前に置く必要があります。 ** 仮パラメータ

さらに、関数が呼び出されたときに、アンラップと呼ばれるメソッドがあります:

Python での ** および * パラメータの用途は何ですか?上記の出力

グループまたはディクショナリがパラメータとして渡されるとき、ラップされた形式で仮パラメータ定義を適応させたい場合 (h を *a に渡すなど)、要素を配置します。上記の k を **b に)、タプルには * を使用し、辞書には ** を使用します。「ラップを解除するだけ」で渡します。

実際、f を呼び出すときに * を使用するのは、Python に次のことを思い出させるためです。実際のパラメータ h を 2 つの散在要素 c と d に分割し、それらを別々に渡します (上記のコードの f を def f (arg1, arg2, **b) として定義して、arg1 が値 3 を取得し、 arg2 は値 4 を取得します。 ** 同じ原理が似ています。さらに、解凍するときも *これはリストにも当てはまります ([] はリストを定義し、() はタプルを定義します)。 #

以上がPython での ** および * パラメータの用途は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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