Python 3 中「非局部」的力量
在 Python 程式設計中,變數可以根據其範圍進行分類:
理解「nonlocal」
「nonlocal」在 Python 3 中用來宣告存在於 a 中的變數範圍較廣,但未宣告為全域。它允許您存取和修改封閉函數中的變量,而不影響同名的全域變量。「非局部」的影響
為了說明差異,請考慮下面的例子沒有"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 = 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
與“global”的區別
“nonlocal”與“global”關鍵字不同因為它允許從封閉的範圍訪問和修改變量,而“全局”則從真正的全域範圍存取和修改變數。 使用上面範例中的「global」將產生以下輸出:inner: 2 outer: 1 global: 2
結論
「nonlocal」提供Python 3 中從封閉作用域存取和修改變數的強大機制。它可以讓您避免在嵌套函數中修改全域變數的陷阱,並保持更有條理和模組化的程式碼結構。以上是Python 的「nonlocal」關鍵字與巢狀函數作用域中的「global」有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!