Python 3 では、ネストされた引数の構文と動作に大幅な変更が加えられています。 Python 2 では、関数定義およびラムダ式でタプルのアンパックを使用して、ネストされた引数を定義できました。ただし、混乱と複雑さへの懸念から、この機能は Python 3 では削除されました。
ネストされた引数を利用する Python 2 コードを Python 3 モジュールにコンパイルしようとする場合、提供されたコンテキストで説明されているようなエラーが発生する可能性があります。コードを Python 3 に正常に移植するには、次のガイドラインに従う必要があります:
関数定義:
タプルのアンパック構文を単一のパラメーターに置き換え、タプルを手動でアンパックします。関数本体内:
<code class="python">def add(self, sub_pred_obj): sub, pred, obj = sub_pred_obj # Remaining function body</code>
ラムダ式:
タプルのアンパックを回避し、インデックス作成を使用してラムダ内の個々の要素にアクセスします:
<code class="python">lambda xy: (xy[1], xy[0])</code>
変換ツールの使用:
複雑な関数の場合、2to3、modernize、futurize などの変換ツールは、これらの変更を自動的に識別して提案できます。
PEP 3113 では、タプル パラメーターのアンパックを削除する理由について説明しています。クロージャ、デバッグ、その他の言語機能など、多くの状況において混乱を招き、実装上の問題を引き起こす可能性があるという懸念を挙げています。
一方、タプル パラメータのアンパックは廃止されました。 Python 3 で直接サポートされていますが、同様の機能を実現する代替ソリューションがあります:
以上がタプルのアンパックが削除された後、Python 3 でネストされた引数をどのように処理すればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。