python3 變數的作用域

2022-07-26 07:57:17 字數 1613 閱讀 9821

'''

globals()檢視全域性作用域

locals()檢視當前作用域

'''a = 10

deffunc():

a = 20

print

(a)func() #20

print(a) #

10'''

注意,在python中,變數是遵循就近原則的。

在函式外面的變數被稱為全域性變數,它的作用域是整個py檔案。

在函式內部的變數被稱為區域性變數,作用範圍僅限於函式內部。

我們可以通過globals()和locals()檢視全域性和區域性作用域中的內容。

'''a = 10

deffunc():

a = 40b = 20

defabc():

print("

abc"

)

print

(a, b)

print

(globals())

print

(locals())

func()

#40 20##

'''global和nonlocal關鍵字

'''a = 10

deffunc():

a = 20

print

(a)func() #20

'''這種情況是正常的。接著看下面的情況:

'''a = 10

deffunc():

#a += 1 # 報錯:unboundlocalerror: local variable 'a' referenced before assignment

print

(a)func()

'''注意報錯那句話,這句話相當於a = a + 1先計算右邊,右邊會把全域性變數a引入進來使用,然後重新賦值給a,但是,python中不允許函

數內部改變外面變數的值,這樣做很不安全,python規定,在函式內部想要修改全域性變數,必須使用global關鍵字把外面的變數引入才可

以進行修改(賦值)。

'''a = 10

deffunc():

global

a a += 1

print

(a)func() #11

'''nonlocal也是一樣的操作,它負責在內層函式中引入外層函式的區域性變數。

'''a = 10

deffunc():

a = 20

definner():

nonlocal a

a = 30

print

(a) inner()

print

(a)print(a) #

10func() #

30 30

'''不加nonlocal的情況

'''a = 10

deffunc():

a = 20

definner():

a = 30

print

(a) inner()

print

(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 的規則查詢,即 在區域性找不到,便會去區域性外的區域性找 例如閉包 再找不到就會去...