python作用域的優(yōu)先級(jí)-創(chuàng)新互聯(lián)

這篇文章主要講解了“python作用域的優(yōu)先級(jí)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“python作用域的優(yōu)先級(jí)”吧!

義安網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),義安網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為義安成百上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營(yíng)銷網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的義安做網(wǎng)站的公司定做!

LEGB:

  • L:即locals,當(dāng)前所在命名空間(函數(shù)或者模塊),函數(shù)參數(shù)也屬于命名空間內(nèi)的變量

  • E:即enclosing function,外部嵌套函數(shù)的命名空間

  • G:即globals,全局變量

  • B:即內(nèi)建模塊的命名空間,這些內(nèi)建模塊都在__builtin__中

變量搜索的優(yōu)先級(jí):局部作用域(L)>嵌套作用域(E)>全局作用域(G)>內(nèi)置作用域(B)

下面看個(gè)例子

1:

city = "zhengzhou" def cityname():     city = "shanghai"     print city cityname() print city

執(zhí)行。。。

shanghai zhengzhou

說(shuō)明:模塊中的值為zhengzhou的city變量是全局變量,函數(shù)cityname中的city變量為局部變量,因此按照作用域搜索順序,函數(shù)中print 語(yǔ)句中的city值為cityname函數(shù)內(nèi)部的city,即函數(shù)內(nèi)部city賦值不能改變外部作用域中的同名變量的值;函數(shù)外餓的print語(yǔ)句的city為模塊中全局變量

2:上面例子中函數(shù)內(nèi)部賦值怎么可以修改外部作用域的同名變量的值

city = "zhengzhou" def cityname():     global city     city = "shanghai"     print city cityname() print city

執(zhí)行。。。

shanghai shanghai

說(shuō)明:這里使用了關(guān)鍵字global,來(lái)聲明函數(shù)內(nèi)部的city變量為全局變量,由此在函數(shù)內(nèi)部作用域可以修改全局變量

關(guān)鍵字nonlocal。

在python2中,閉包只能讀外部函數(shù)的變量,而不能改寫它。為了解決這個(gè)問(wèn)題,python3引入了nonlocal關(guān)鍵字,在閉包內(nèi)用nonlocal聲明變量,就可以讓解釋器在外層函數(shù)中查找變量名。nonlocal與global類似,使用nonlocal關(guān)鍵字可以在一個(gè)嵌套函數(shù)中修改嵌套作用域

def cityname():     city = "zhengzhou"     def  Cityname():         nonlocal name         city = "shanghai"     Cityname()     print(city)    cityname()

執(zhí)行。。。。

shanghai

關(guān)鍵字global和nonlocal的區(qū)別:

1:功能不同,global關(guān)鍵字修飾變量后表示該變量是全局變量,對(duì)改變了進(jìn)行修改就對(duì)全局變量的修改,而nonlocal桿件自修飾變量是上一級(jí)函數(shù)中的局部變量,如果上一級(jí)函數(shù)中不存在該局部變量,nonlocal位置會(huì)發(fā)生錯(cuò)誤

2:范圍不同。global關(guān)鍵字可以用在任何地方,包括最上層函數(shù)中和嵌套函數(shù)中,即使之前未定義改變了,global修飾后也可以直接使用,而nonlocal關(guān)鍵字只能用于嵌套函數(shù)中,并且函數(shù)中定義了相應(yīng)的局部變量,否則會(huì)發(fā)生錯(cuò)誤

感謝各位的閱讀,以上就是“python作用域的優(yōu)先級(jí)”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)python作用域的優(yōu)先級(jí)這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)頁(yè)名稱:python作用域的優(yōu)先級(jí)-創(chuàng)新互聯(lián)
文章分享:http://bm7419.com/article12/dsedgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、定制開發(fā)、動(dòng)態(tài)網(wǎng)站定制網(wǎng)站、商城網(wǎng)站、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)