首頁技術(shù)文章正文

Python培訓(xùn):Python的LEGB規(guī)則是什么?

更新時間:2022-10-10 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  在Python中,程序的變量并不是在哪個位置都可以訪問的,訪問權(quán)限決定于這個變量是在哪里賦值的。我們先來看一段代碼:

a = 10
def test():
    a = 20
    print('a的值是%d'%a)
test()
a的值是20

  上述代碼有兩個變量a,當(dāng)在test函數(shù)中輸出變量a的值時,為什么輸出的是20,而不是10呢?其實,這就是因為變量作用域不同導(dǎo)致的。

  變量的作用域決定了在哪一部分程序可以訪問哪個特定的變量名稱。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)鍵作用域中找。

分享到:
在線咨詢 我要報名
和我們在線交談!