まず第一に、nonlocal キーワードがクロージャ内で 定義されていることを明確にする必要があります。次のコードを見てください:
x = 0 def outer(): x = 1 def inner(): x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
result
# inner: 2 # outer: 1 # global: 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)
result
# inner: 2 # outer: 2 # global: 0
同じように、例を見てください:違いがわかりますか?これは、内部に関数がネストされた 関数です。非ローカルを使用すると、変数が入れ子関数 inner() 内で有効であるだけでなく、大きな関数全体でも有効であることが宣言されます。
global
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
global は、関数クラスの変数ではなく、環境全体の変数に作用します。
以上がPython の非ローカルおよびグローバル キーワード解析手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。