Python 中的作用域 問題

2021-09-24 09:37:38 字數 751 閱讀 9853

作用域指的是變數在程式中的可應用範圍。

作用域按照變數的定義位置可以劃分為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 中受到了影響發生了變化,導致蟲...