'''globals()檢視全域性作用域
locals()檢視當前作用域
'''a = 10
deffunc():
a = 20
(a)func() #20
print(a) #
10'''
注意,在python中,變數是遵循就近原則的。
在函式外面的變數被稱為全域性變數,它的作用域是整個py檔案。
在函式內部的變數被稱為區域性變數,作用範圍僅限於函式內部。
我們可以通過globals()和locals()檢視全域性和區域性作用域中的內容。
'''a = 10
deffunc():
a = 40b = 20
defabc():
print("
abc"
)
(a, b)
(globals())
(locals())
func()
#40 20##
'''global和nonlocal關鍵字
'''a = 10
deffunc():
a = 20
(a)func() #20
'''這種情況是正常的。接著看下面的情況:
'''a = 10
deffunc():
#a += 1 # 報錯:unboundlocalerror: local variable 'a' referenced before assignment
(a)func()
'''注意報錯那句話,這句話相當於a = a + 1先計算右邊,右邊會把全域性變數a引入進來使用,然後重新賦值給a,但是,python中不允許函
數內部改變外面變數的值,這樣做很不安全,python規定,在函式內部想要修改全域性變數,必須使用global關鍵字把外面的變數引入才可
以進行修改(賦值)。
'''a = 10
deffunc():
global
a a += 1
(a)func() #11
'''nonlocal也是一樣的操作,它負責在內層函式中引入外層函式的區域性變數。
'''a = 10
deffunc():
a = 20
definner():
nonlocal a
a = 30
(a) inner()
(a)print(a) #
10func() #
30 30
'''不加nonlocal的情況
'''a = 10
deffunc():
a = 20
definner():
a = 30
(a) inner()
(a)print(a) #
10func() #
30 20
Python3 變數作用域
變數的作用域 是指乙個變數所產生作用的範圍,在哪乙個範圍內能被直譯器識別。print name 直接輸出的話會出現這樣的乙個錯誤 nameerror name name is not defined 變數的作用域 全域性變數和區域性變數 一般宣告在函式外部的變數,被稱為全域性變數,作用範圍是整個.p...
Python3 變數的作用域
coding utf 8 變數的作用域 是指乙個變數所產生作用的範圍,在哪乙個範圍內能夠被直譯器識別。nameerror name name is not defined print name 變數的作用域 全域性變數和區域性變數 一般宣告在函式外部的變數,被稱為全域性變數,作用範圍是整個.py檔案...
Python3學習筆記 10 變數的作用域
一 變數的作用域 python的作用域一共有4種,分別是 l local 區域性作用域 e enclosing 閉包函式外的函式中 g global 全域性作用域 b built in 內建作用域 以 l e g b 的規則查詢,即 在區域性找不到,便會去區域性外的區域性找 例如閉包 再找不到就會去...