理解「nonlocal」在Python 3 中的作用
在Python 3 中,「nonlocalhon」在存取定義在Python 中的變數中起著至關重要的作用。一個封閉範圍,但在目前範圍之外。與引用全域作用域中的變數的「global」不同,「nonlocal」可讓您與父函數作用域中的變數進行互動。
在不使用「nonlocal」的情況下考慮此範例:
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”被賦值為局部值2,而外部函數中的變數“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
使用“nonlocal”,內部函數中的變數“x”現在綁定到該變數外部函數中的“x”。因此,當內部函數中修改“x”時,也會影響其在外部函數中的值。全域變數“x”保持不變。
相反,「global」會將內部函數中的變數「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中文網其他相關文章!