Python變數作用域
阿新 • • 發佈:2020-12-17
技術標籤:Python
Python查詢一個變數時會按照“區域性作用域”、“巢狀作用域”、“全域性作用域”和“內建作用域”的順序進行搜尋。所謂的“內建作用域”就是Python內建的那些識別符號,我們之前用過的input、print、int等都屬於內建作用域。
def foo():
#此處的b為區域性變數,在foo()中,b屬於區域性作用域
b = 'hello'
def bar():
c = True
print(a)
#對於bar()而言,b屬於巢狀作用域
print(b)
print (c)
bar()
if __name__ == '__main__':
#此處的a為全域性變數,屬於全域性作用域
a = 100
foo()
執行結果如下:
如果我們希望函式內部的函式能夠修改巢狀作用域中的變數,可以使用nonlocal關鍵字來指示變數來自於巢狀作用域。
nonlocal作用:將區域性的變數提升為巢狀區域性變數
條件:必須有同名巢狀區域性變數;