更新時間:2022-10-10 來源:黑馬程序員 瀏覽量:
在Python中,程序的變量并不是在哪個位置都可以訪問的,訪問權(quán)限決定于這個變量是在哪里賦值的。我們先來看一段代碼:
a = 10 def test(): a = 20 print('a的值是%d'%a) test() a的值是20
上述代碼有兩個變量a,當在test函數(shù)中輸出變量a的值時,為什么輸出的是20,而不是10呢?其實,這就是因為變量作用域不同導致的。
變量的作用域決定了在哪一部分程序可以訪問哪個特定的變量名稱。Python變量的作用域一共有4種,分別是:
·L(local):函數(shù)內(nèi)的區(qū)域,包括局部變量和參數(shù)。
·E(Enclosing):外層嵌套函數(shù)區(qū)域,常見的是閉包函數(shù)的外層函數(shù)。
·G(Global):全局作用域。
·B(Built-in):內(nèi)鍵作用域。
Python中變量是采用L->E->G->B的規(guī)則查找,即Python檢索變量的時候,會優(yōu)先在函數(shù)作用域中查找,如果沒有找到,便會去外層嵌套函數(shù)作用域找,再找不到就會去全局作用域中找,最后再去內(nèi)鍵作用域中找。