在Python中,我們可以使用global關鍵字來告訴解釋器我們要使用全局變量。然而,在某些情況下,使用全局變量可能會導致代碼的可讀性和可維護性下降,因此,我們可以使用非本地變量來替代全局變量。
def outer(): x = 1 def inner(): nonlocal x x += 1 return x return inner() print(outer()) # 輸出2
在這個例子中,我們定義了一個外部函數outer以及一個嵌套函數inner。在inner函數中,我們使用nonlocal關鍵字來告訴解釋器我們要使用outer函數中定義的變量x。
需要注意的是,nonlocal關鍵字只能用于嵌套函數中,不能用于全局作用域和函數參數的作用域
x = 1 # 全局變量 def outer(x): x += 1 # 函數參數x的作用域 def inner(): nonlocal x x += 1 # 報錯,nonlocal不能使用在函數參數的作用域中 return x return inner() print(outer(x)) # 報錯
總之,非本地變量可以幫助我們在嵌套函數中使用外層函數的變量,從而避免使用全局變量帶來的問題。