Python 3 における「非ローカル」の役割を理解する
Python 3 では、「非ローカル」は、で定義された変数にアクセスする際に重要な役割を果たします。囲んでいるスコープですが、現在のスコープの外側にあります。グローバル スコープ内の変数を参照する「グローバル」とは異なり、「非ローカル」を使用すると、親関数のスコープ内の変数を操作できます。
「非ローカル」を使用せずにこの例を検討してください:
x = 0 def outer(): x = 1 def inner(): x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
出力:
inner: 2 outer: 1 global: 0
ご覧のとおり、内部関数の変数 "x" にはローカル値が割り当てられています。外側の関数の変数 "x" は 1 のままです。グローバル変数 "x" は初期値 0 を保持します。
次に、このコードを "nonlocal" を使用して書き換えてみましょう:
x = 0 def outer(): x = 1 def inner(): nonlocal x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
出力:
inner: 2 outer: 2 global: 0
「非ローカル」を使用すると、内部関数の変数「x」がバインドされます。外側の関数の変数「x」に代入します。その結果、内部関数内で「x」が変更されると、外部関数の値にも影響します。グローバル変数 "x" は変更されません。
対照的に、"global" は、内部関数の変数 "x" をグローバル スコープの変数 "x" にバインドします。
x = 0 def outer(): x = 1 def inner(): global x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
出力:
inner: 2 outer: 1 global: 2
Python で変数を効果的に管理するには、「非ローカル」と「グローバル」の微妙な違いを理解することが重要ですコード。
以上がPython の「nonlocal」キーワードは、スコープ管理における「global」とどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。