作用域指的是變數在程式中的可應用範圍。
作用域按照變數的定義位置可以劃分為4類即legb:
local(函式內部)區域性作用域。
enclosing(巢狀函式的外層函式內部)巢狀作用域(閉包)。
global(模組全域性)全域性作用域。
built-in(內建)內建作用域。(指的是builtins.py模組)
搜尋順序:
python內層作用域訪問外層作用域時的順序:
python搜尋4個作用域[本地作用域(l)之後是上一層結構中def或者lambda的本地作用域(e),之後是全域性作用域(g)最後是內建作用域(b)(即python的內建類和函式等)]
並且在第一處能夠找到這個變數名的地方停下來。如果變數名在整個的搜尋過程中都沒有找到,python就會報錯。
a = 1 # 全域性作用域
e = 7
def outer():
b = 2 # 巢狀作用域
d = 5
e = 6
def inner():
c = 3 # 區域性作用域
d = 4 # 如果區域性有 就不找外面的
print(d) # 會列印4 ,因為內部有,不用出去找
print(e) # 會列印6 ,因為巢狀作用域有,不用到全域性作用域
print(max) # 內建函式
inner()
outer()
python中if for 作用域問題
先看一段 class car def init self,name self.name name def repr self return self.name if name main import weakref cars 1 weak weakref.weakvaluedictionary fo...
python中的作用域
python中的作用域分4種情況 x int 2.9 int built in g count 0 global def outer o count 1 enclosing def inner i count 2 local print o count print i count 找不到 inner...
python的變數作用域問題
偶然掉進了乙個坑里。仔細分析了下原因。原來是變數作用域的問題。簡單抽象如下 id 1 許多行 id for id in range 10 許多行 if id 1 做一些事情 pass else 做另外一些事情 結果由於id在 id for id in range 10 中受到了影響發生了變化,導致蟲...