全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

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

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

更新時(shí)間:2022-10-10 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

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

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

  上述代碼有兩個(gè)變量a,當(dāng)在test函數(shù)中輸出變量a的值時(shí),為什么輸出的是20,而不是10呢?其實(shí),這就是因?yàn)樽兞孔饔糜虿煌瑢?dǎo)致的。

  變量的作用域決定了在哪一部分程序可以訪問(wèn)哪個(gè)特定的變量名稱(chēng)。Python變量的作用域一共有4種,分別是:

  ·L(local):函數(shù)內(nèi)的區(qū)域,包括局部變量和參數(shù)。

  ·E(Enclosing):外層嵌套函數(shù)區(qū)域,常見(jiàn)的是閉包函數(shù)的外層函數(shù)。

  ·G(Global):全局作用域。

  ·B(Built-in):內(nèi)鍵作用域。

  Python中變量是采用L->E->G->B的規(guī)則查找,即Python檢索變量的時(shí)候,會(huì)優(yōu)先在函數(shù)作用域中查找,如果沒(méi)有找到,便會(huì)去外層嵌套函數(shù)作用域找,再找不到就會(huì)去全局作用域中找,最后再去內(nèi)鍵作用域中找。

分享到:
在線(xiàn)咨詢(xún) 我要報(bào)名
和我們?cè)诰€(xiàn)交談!