小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Python中變量的作用域

 元東sntpxtmln9 2019-01-14

一、變量作用域的含義

變量的作用域說(shuō)白了就是變量的值從哪里獲取,或者說(shuō)變量取值的地方

我們?cè)趯?xiě)代碼過(guò)程中會(huì)用到很多變量,這些變量會(huì)出現(xiàn)在各種代碼塊中,有的出現(xiàn)在函數(shù)塊里,有的在函數(shù)塊外,例如:

def n2: a = 1 b = 2 def n1: b = 3 print(b) print(a) n1n2結(jié)果:31

在這個(gè)例子中,對(duì)于變量a,b的值,是應(yīng)該先識(shí)別函數(shù)中的還是先識(shí)別函數(shù)外的呢,其實(shí)python內(nèi)部在識(shí)別變量的值得時(shí)候是有順序的,不是胡亂讀取的,python內(nèi)部對(duì)于獲取變量的值是規(guī)定了一個(gè)順序的。

二、變量定義域順序

LEGB原則

當(dāng)你在代碼里聲明一個(gè)變量后,python會(huì)在LEGB四個(gè)作用域里搜索變量的值,它的搜索是有順序的,第一步現(xiàn)在L也就是當(dāng)前最里層局部作用域內(nèi)找,如果沒(méi)找到,第二步會(huì)跑到包含當(dāng)前層的上一層作用域E里找,還沒(méi)找到的話(huà),第三部會(huì)去模塊級(jí)的里面G里找,最后是去python里的固定模塊里找。

三、在不同作用域修改變量的值

問(wèn)題1.,既然對(duì)于變量的值的搜索有順序,如果當(dāng)前在全局里已經(jīng)有變量a的值,我在局部域里想修改a的值,怎么修改呢?

問(wèn)題2. 如果變量是在上一層的函數(shù)里有值,我想在當(dāng)前層函數(shù)內(nèi)修改,又如何操作呢?

問(wèn)題1的解答:對(duì)于這種情況需要用到global,在重新給變量a賦值時(shí),要先聲明變量global a,

a = 1def n: global a print(a) a = 123 print(a)n結(jié)果:1123 問(wèn)題2的解答:對(duì)于這種情況需要用到nonlocal,在重新給變量a賦值時(shí),要先聲明變量nonlocal a

def n1: a = 1 def n2: nonlocal a a = 2 print(a) n2 print(a)n1結(jié)果:22四、哪些情況適用變量的作用域?qū)τ谀K,類(lèi),函數(shù)里出現(xiàn)的變量就要注意了,它們會(huì)引入新的作用域,在這里如果內(nèi)部

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多