ホームページ >バックエンド開発 >Python チュートリアル >Python 2.x クロージャに非ローカル キーワードがないことを回避するにはどうすればよいですか?
Python 2.x の nonlocal キーワード: クロージャ実装の回避策
Python 2.6 の nonlocal キーワード。これにより、関数のネストが許可されます。囲んでいる関数で定義された変数を変更する他の関数 (クロージャ) は使用できません。
非ローカルの不在を克服する:
Python 2 のクロージャ内の非ローカル変数にアクセスするには.x の場合は回避策が必要です。開発者は、非ローカル キーワードを使用する代わりに、ディクショナリを作成して必要なデータを保存できます。
内部関数はこのディクショナリにアクセスし、その内容を変更できます。そうすることで、辞書が表す非ローカル変数と効果的に対話します。
例:
次のコードを使用して、Python 2.6 でクロージャを実装しようとしていると考えてみましょう。非ローカル キーワード:
<code class="python">def outer(): x = 0 def inner(): nonlocal x x += 1 return x return inner</code>
非ローカル キーワードは Python 2.6 では認識されないため、このコードはエラーになります。
回避策を使用してこのクロージャを実装するには、コードを変更します。次のようになります。
<code class="python">def outer(): data = {'x': 0} def inner(): data['x'] += 1 return data['x'] return inner</code>
この場合、データ ディクショナリには x の値が格納され、内部関数はその内容を変更します。これにより、クロージャが非ローカル変数 x と対話できるようになります。
この回避策を採用することで、開発者は Python 2.x クロージャの非ローカル変数にアクセスして変更できるようになり、より複雑で柔軟なコードを実装できるようになります。
以上がPython 2.x クロージャに非ローカル キーワードがないことを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。