ホームページ >バックエンド開発 >Python チュートリアル >Python の入れ子関数から非ローカル変数にアクセスする方法
入れ子関数スコープ内の非ローカル変数へのアクセス
Python では、入れ子関数スコープは、外側のスコープへのアクセスを提供します。ただし、入れ子になった関数内の囲みスコープ内の変数を変更しようとすると、UnboundLocalError が発生する可能性があります。
この問題に対処するには、いくつかのオプションがあります。
1。 「nonlocal」キーワードの使用 (Python 3 ):
Python 3 以降では、nonlocal キーワードを使用すると、ネストされた関数内で非ローカル変数を再バインドできます。
<code class="python">def outer(): ctr = 0 def inner(): nonlocal ctr ctr += 1 inner()</code>
2.リストによる間接アクセス (Python 2 および 3):
Python 2 と 3 の両方で、リストを使用して変数を保持し、ネストされた関数内で間接的に変数をインクリメントできます。
<code class="python">ctr = [0] def inner(): ctr[0] += 1</code>
3.グローバル変数の使用 (非推奨):
グローバルを使用すると、外側のスコープから変数にアクセスできるようになりますが、潜在的な競合やコードの可読性の問題のため、一般的には推奨されません。
<code class="python">def outer(): global ctr ctr = 0 def inner(): ctr += 1</code>
適切なソリューションの選択は、特定の Python バージョンとコードの設計上の考慮事項によって異なります。
以上がPython の入れ子関数から非ローカル変数にアクセスする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。