乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Python中變量的作用域

       元東sntpxtmln9 2019-01-14

      一、變量作用域的含義

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

      我們在寫代碼過程中會用到很多變量,這些變量會出現(xiàn)在各種代碼塊中,有的出現(xiàn)在函數(shù)塊里,有的在函數(shù)塊外,例如:

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

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

      二、變量定義域順序

      LEGB原則

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

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

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

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

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

      a = 1def n: global a print(a) a = 123 print(a)n結(jié)果:1123 問題2的解答:對于這種情況需要用到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,類,函數(shù)里出現(xiàn)的變量就要注意了,它們會引入新的作用域,在這里如果內(nèi)部

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多