python中變數的作用域

2022-08-22 05:51:17 字數 1320 閱讀 7052

1. python作用域型別

1)函式中的區域性作用域:local

2)巢狀函式中父級函式的區域性作用域:enclosing

3)全域性作用域:global

4)系統內建的變數:如 int、str、list 等關鍵字

變數的查詢順序為:區域性作用域 > 父級函式作用域 > 當前模組全域性作用域 > 系統內建作用域

2. 函式體內部對外部變數的引用

1)獲取變數

函式內部可直接獲取外部定義的變數

#

直接獲取變數,此時列印結果為:a = 0

a =0

deffunc1():

print(a)

如下所示,函式內再定義乙個重名的變數,會優先引用區域性作用域內的變數,並不會引用到全域性變數

#

函式內再宣告乙個變數a,並賦值,此時函式內部列印的結果為:a = 1,函式外部列印的結果為:a = 0

a =0

deffunc2():

a = 1

print

(a)print(a)

2)修改全域性變數

要想在函式內部對全域性變數進行修改,需要使用 global 宣告函式體內的這個變數是全域性變數

#

用global宣告這是乙個全域性變數,此時列印結果為:a = 1

a =0

deffunc3():

global

a a = 1

print(a)

3)修改父級函式定義的區域性變數

先來看乙個錯誤案例

#

這是乙個裝飾器,可以簡單先理解為是乙個巢狀函式,在父級函式中定義了變數 a,然後在最內層函式中修改 a 的值

deffunc_error(func):

a = 5

deffunc()

a = a + 1

print

(a)

return

@func_error

deferror_demo():

pass

error_demo()

執行後報錯:unboundlocalerror: local variable 'a' referenced before assignment

python中變數作用域

塊級作用域 if true a 10 變數沒有塊級作用域 print a 區域性作用域 只能在某一時刻才能使用 全域性作用域 num 20 def show 全域性變數在函式內部使用時,不能更改,num 10是你自己定義的變數 num 10 print num show print num 若更改需...

Python中變數作用域

在def中定義的變數都是區域性變數 def foo a 200print a def fooo a a 300print a fooo foo 執行得到 unboundlocalerror local variable a referenced before assignment也就是說在函式foo...

Python中變數的作用域

3 變數名解析legb法則 4 關鍵字global 在python程式中,建立,改變,查詢變數名的時候,都是在乙個儲存變數名的空間中進行,我們稱之為命名空間,也被稱之為作用域.簡單來說,變數的作用域就是指變數可以使用的範圍 程式的變數並不是在任意的位置都可以訪問,訪問許可權取決於這個變數是在 賦值的...