L(Local)局部作用域
E(Enclosing)閉包函數(shù)外的函數(shù)中
G(Global)全局作用域
B (Built-in)內(nèi)建作用域
以L->E->G->B的規(guī)則查找,即局部找不到,便在局部外的局部查找(例如閉包),再去全局找,再去內(nèi)建找。
x = int(2.9) # 內(nèi)建作用域
g_count = 0? # 全局作用域
def outer():
? ? ? o_count = 1? # 閉包函數(shù)外的函數(shù)中
? ? ? def inner():
????? ? ? ? i_count = 2? # 局部作用域
python中只喲歐模塊、類和函數(shù)才會(huì)引入作用域,其它代碼塊(if/elif/else; for/while;try/except)不會(huì)引入作用域,這個(gè)特點(diǎn)是和別的語(yǔ)言不同的。
global和nonlocal關(guān)鍵字
內(nèi)部作用域想修改全局作用域的變量,需要使用global聲明
局部作用域想修改Enclosing作用域的變量,需要使用nonlocal聲明