1. python作用域型別
1)函式中的區域性作用域:local
2)巢狀函式中父級函式的區域性作用域:enclosing
3)全域性作用域:global
4)系統內建的變數:如 int、str、list 等關鍵字
變數的查詢順序為:區域性作用域 > 父級函式作用域 > 當前模組全域性作用域 > 系統內建作用域
2. 函式體內部對外部變數的引用
1)獲取變數
函式內部可直接獲取外部定義的變數
#如下所示,函式內再定義乙個重名的變數,會優先引用區域性作用域內的變數,並不會引用到全域性變數直接獲取變數,此時列印結果為:a = 0
a =0
deffunc1():
print(a)
#2)修改全域性變數函式內再宣告乙個變數a,並賦值,此時函式內部列印的結果為:a = 1,函式外部列印的結果為:a = 0
a =0
deffunc2():
a = 1
(a)print(a)
要想在函式內部對全域性變數進行修改,需要使用 global 宣告函式體內的這個變數是全域性變數
#3)修改父級函式定義的區域性變數用global宣告這是乙個全域性變數,此時列印結果為:a = 1
a =0
deffunc3():
global
a a = 1
print(a)
先來看乙個錯誤案例
#執行後報錯:unboundlocalerror: local variable 'a' referenced before assignment這是乙個裝飾器,可以簡單先理解為是乙個巢狀函式,在父級函式中定義了變數 a,然後在最內層函式中修改 a 的值
deffunc_error(func):
a = 5
deffunc()
a = a + 1
(a)
return
@func_error
deferror_demo():
pass
error_demo()
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程式中,建立,改變,查詢變數名的時候,都是在乙個儲存變數名的空間中進行,我們稱之為命名空間,也被稱之為作用域.簡單來說,變數的作用域就是指變數可以使用的範圍 程式的變數並不是在任意的位置都可以訪問,訪問許可權取決於這個變數是在 賦值的...