最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python?nonlocal的用法詳解

 更新時(shí)間:2023年10月26日 09:50:14   作者:Zack1st_diu  
這篇文章主要給大家介紹了關(guān)于python?nonlocal用法的相關(guān)資料,最近在python學(xué)習(xí)中遇到了nonlocal關(guān)鍵字但是感到困惑,于是記錄nonlocal關(guān)鍵字用法,需要的朋友可以參考下

官網(wǎng)的nonlocal的用法

1,非局部聲明變量指代的已有標(biāo)識(shí)符是最近外面函數(shù)的已聲明變量,但是不包括全局變量。這個(gè)是很重要的,因?yàn)榻壎ǖ哪J(rèn)行為是首先搜索本地命名空間。nonlocal聲明的變量只對(duì)局部起作用,離開封裝函數(shù),那么該變量就無(wú)效。

2,非局部聲明不像全局聲明,我們必須在封裝函數(shù)前面事先聲明該變量

3,非局部聲明不能與局部范圍的聲明沖突

第一點(diǎn):

count = 1 # 這里是聲明的是全局變量,對(duì)于nonlocal來(lái)說(shuō)全局變量是不包括的

def a():
    count = 'a函數(shù)里面' # 這里對(duì)于nonlocal來(lái)說(shuō)就是外面的函數(shù)已聲明的變量
    def b():
        nonlocal count # nonlocal count指的是函數(shù)b內(nèi)
        print(count)
        count = 2
    b()
    print(count)

if __name__ == '__main__':
    a()
    print(count)
count = 1

def a():
    # count = 'a函數(shù)里面' # SyntaxError: no binding for nonlocal 'count' found
    def b():
        nonlocal count
        print(count)
        count = 2
    b()
    print(count)

if __name__ == '__main__':
    a()
    print(count)

像上面的代碼,如果nonlocal執(zhí)行前,沒(méi)有在局部里先聲明局部變量,就會(huì)報(bào)錯(cuò)找不到局部變量,因?yàn)閚onlocal是不會(huì)查全局變量。

nonlocal的作用:

1,nonlocal可以讓最里面的函數(shù)使用最近的一個(gè)外函數(shù)已聲明的變量,將最里面的函數(shù)的局部變量設(shè)置和最近的一個(gè)外函數(shù)聲明的變量為同一個(gè)變量(引用同一個(gè)內(nèi)存地址)。例如下面的代碼,c函數(shù)聲明了nonlocal count,那么c函數(shù)就可以用最近函數(shù)b聲明的count=2,并且可以對(duì)b.count賦值。(注意:nonlocal不會(huì)使用全局變量)

count = 1

def a():
    count = 'a函數(shù)里面'
    def b():
        count = 2
        print(count)
        def c():
            nonlocal count
            print(count)
        c()
    b()
    print(count)

if __name__ == '__main__':
    a()
    print(count)

2
2
a函數(shù)里面
1

案例:引用官網(wǎng)的例子對(duì)global,nonlocal,全局變量的關(guān)系解釋

def scope_test():
    def do_local():
        spam = "local spam"

    def do_nonlocal():
        nonlocal spam
        spam = "nonlocal spam"

    def do_global():
        global spam
        spam = "global spam"

    spam = "test spam"
    do_local()
    print("After local assignment:", spam)
    do_nonlocal()
    print("After nonlocal assignment:", spam)
    do_global()
    print("After global assignment:", spam)

scope_test()
print("In global scope:", spam)

After local assignment: test spam
After nonlocal assignment: nonlocal spam
After global assignment: nonlocal spam
In global scope: global spam

上面案例代碼看出:

1,do_local函數(shù)下定義的局部變量spam不會(huì)改變scope_test函數(shù)定義的局部變量spam。
2,do_nonlocal函數(shù)下nonlocal非本地聲明,將do_nonlocal函數(shù)下的局部變量spam聲明為非do_nonlocal函數(shù)本地,而是將do_nonlocal.spam聲明和scope_test.spam為同一個(gè)變量。
3,do_global函數(shù)下global全局聲明spam為全局變量,但是依然不會(huì)改變scope_test.spam的局部變量,說(shuō)明global全局聲明對(duì)局部的變量不產(chǎn)生作用。
4,在全局引用全局聲明global的全局變量spam是可以的。

總結(jié) 

到此這篇關(guān)于python nonlocal用法詳解的文章就介紹到這了,更多相關(guān)python nonlocal用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python報(bào)錯(cuò)ValueError:?cannot?convert?float?NaN?to?integer的解決方法

    Python報(bào)錯(cuò)ValueError:?cannot?convert?float?NaN?to?intege

    在Python編程中,我們經(jīng)常需要處理各種數(shù)據(jù)類型,包括浮點(diǎn)數(shù)和整數(shù),然而,有時(shí)候我們可能會(huì)遇到一些意外的情況,比如將一個(gè)包含NaN(Not?a?Number)的浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù)時(shí),就會(huì)拋出錯(cuò)誤,本文將探討這個(gè)錯(cuò)誤的原因,并給出幾種可能的解決方案,需要的朋友可以參考下
    2024-09-09
  • Python實(shí)現(xiàn)剪刀石頭布小游戲(與電腦對(duì)戰(zhàn))

    Python實(shí)現(xiàn)剪刀石頭布小游戲(與電腦對(duì)戰(zhàn))

    這篇文章給大家分享Python基礎(chǔ)實(shí)現(xiàn)與電腦對(duì)戰(zhàn)的剪刀石頭布小游戲,練習(xí)if while輸入和輸出,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2019-12-12
  • python 實(shí)用工具狀態(tài)機(jī)transitions

    python 實(shí)用工具狀態(tài)機(jī)transitions

    這篇文章主要介紹了python 實(shí)用工具狀態(tài)機(jī)transitions的使用,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-11-11
  • PyQt5實(shí)現(xiàn)平滑移動(dòng)側(cè)邊菜單欄效果的示例

    PyQt5實(shí)現(xiàn)平滑移動(dòng)側(cè)邊菜單欄效果的示例

    本文主要介紹了PyQt5實(shí)現(xiàn)平滑移動(dòng)側(cè)邊菜單欄效果的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-05-05
  • python文件頭部聲明#coding=utf-8問(wèn)題

    python文件頭部聲明#coding=utf-8問(wèn)題

    這篇文章主要介紹了python文件頭部聲明#coding=utf-8問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • OpenCV圖像處理之七種常用圖像幾何變換

    OpenCV圖像處理之七種常用圖像幾何變換

    這篇文章主要介紹了OpenCV圖像處理中常用的幾個(gè)圖像幾何變換:裁剪、放大、縮小、平移、錯(cuò)切、鏡像、旋轉(zhuǎn)、透視等。文中示例代碼非常詳細(xì),需要的朋友可以參考一下
    2021-12-12
  • K最近鄰算法(KNN)---sklearn+python實(shí)現(xiàn)方式

    K最近鄰算法(KNN)---sklearn+python實(shí)現(xiàn)方式

    今天小編就為大家分享一篇K最近鄰算法(KNN)---sklearn+python實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • 關(guān)于matlab圖像濾波詳解(二維傅里葉濾波)

    關(guān)于matlab圖像濾波詳解(二維傅里葉濾波)

    這篇文章主要介紹了關(guān)于matlab圖像濾波詳解(二維傅里葉濾波),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python使用XPath解析HTML的方法詳解

    Python使用XPath解析HTML的方法詳解

    XPath是一種用于選擇XML文檔中節(jié)點(diǎn)的語(yǔ)言,它可以通過(guò)路徑表達(dá)式來(lái)定位節(jié)點(diǎn)。本文將介紹Python中使用XPath解析HTML文檔的方法和技巧,需要的可以參考下
    2023-05-05
  • python實(shí)現(xiàn)簡(jiǎn)單遺傳算法

    python實(shí)現(xiàn)簡(jiǎn)單遺傳算法

    這篇文章主要介紹了python如何實(shí)現(xiàn)簡(jiǎn)單遺傳算法,幫助大家更好的利用python進(jìn)行數(shù)據(jù)分析,感興趣的朋友可以了解下
    2020-09-09

最新評(píng)論

吴忠市| 望谟县| 鹿泉市| 丰顺县| 大石桥市| 灵武市| 开鲁县| 胶州市| 长沙县| 桂东县| 吉首市| 龙胜| 建阳市| 仙桃市| 江口县| 乐至县| 洪雅县| 昌图县| 日照市| 牡丹江市| 思南县| 利津县| 渭源县| 华安县| 荃湾区| 绿春县| 太康县| 枞阳县| 会宁县| 晋宁县| 建始县| 改则县| 饶河县| 临潭县| 蕲春县| 安溪县| 内丘县| 青阳县| 融水| 化德县| 申扎县|