Python 2.x のクロージャで非ローカル変数にアクセスする
Python 2.x には nonlocal キーワードがないため、非ローカル変数へのアクセスについて疑問が生じますクロージャで。内部関数は本質的に非ローカル変数を読み取ることができますが、それらの再バインドは許可されていません。
非ローカル変数にアクセスするための回避策
この制限にもかかわらず、次の回避策を採用できます。
辞書を使用した例
Wikipedia の例に基づいて、次のコード スニペットを考えてみましょう。
<code class="python">def outer(): data = {'y': 0} def inner(): data['y'] += 1 return data['y'] return inner f = outer() print(f(), f(), f()) # prints 1 2 3</code>
この例では、辞書データを使用して非ローカル変数 y を格納します。内部関数は、非ローカル変数の再バインドに関する制限に違反することなく、y の値をインクリメントし、更新された値を返すことができます。
以上がPython 2.x での非ローカル変数へのアクセス: 制限を回避するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。