亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python?nonlocal的用法詳解

 更新時間: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,非局部聲明變量指代的已有標識符是最近外面函數(shù)的已聲明變量,但是不包括全局變量。這個是很重要的,因為綁定的默認行為是首先搜索本地命名空間。nonlocal聲明的變量只對局部起作用,離開封裝函數(shù),那么該變量就無效。

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

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

第一點:

count = 1 # 這里是聲明的是全局變量,對于nonlocal來說全局變量是不包括的

def a():
    count = 'a函數(shù)里面' # 這里對于nonlocal來說就是外面的函數(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í)行前,沒有在局部里先聲明局部變量,就會報錯找不到局部變量,因為nonlocal是不會查全局變量。

nonlocal的作用:

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

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)的例子對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不會改變scope_test函數(shù)定義的局部變量spam。
2,do_nonlocal函數(shù)下nonlocal非本地聲明,將do_nonlocal函數(shù)下的局部變量spam聲明為非do_nonlocal函數(shù)本地,而是將do_nonlocal.spam聲明和scope_test.spam為同一個變量。
3,do_global函數(shù)下global全局聲明spam為全局變量,但是依然不會改變scope_test.spam的局部變量,說明global全局聲明對局部的變量不產(chǎn)生作用。
4,在全局引用全局聲明global的全局變量spam是可以的。

總結(jié) 

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

相關(guān)文章

  • Python使用當前時間、隨機數(shù)產(chǎn)生一個唯一數(shù)字的方法

    Python使用當前時間、隨機數(shù)產(chǎn)生一個唯一數(shù)字的方法

    這篇文章主要介紹了Python使用當前時間、隨機數(shù)產(chǎn)生一個唯一數(shù)字的方法,涉及Python時間與隨機數(shù)相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • 利用Python實現(xiàn)Shp格式向GeoJSON的轉(zhuǎn)換方法

    利用Python實現(xiàn)Shp格式向GeoJSON的轉(zhuǎn)換方法

    JSON(JavaScript Object Nonation)是利用鍵值對+嵌套來表示數(shù)據(jù)的一種格式,以其輕量、易解析的優(yōu)點,這篇文章主要介紹了利用Python實現(xiàn)Shp格式向GeoJSON的轉(zhuǎn)換,需要的朋友可以參考下
    2019-07-07
  • Python之循環(huán)結(jié)構(gòu)

    Python之循環(huán)結(jié)構(gòu)

    今天小編就為大家分享一篇關(guān)于Python之循環(huán)結(jié)構(gòu),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Python獲取excel的數(shù)據(jù)并繪制箱型圖和直方圖的方法實例

    Python獲取excel的數(shù)據(jù)并繪制箱型圖和直方圖的方法實例

    這篇文章主要給大家介紹了關(guān)于Python獲取excel的數(shù)據(jù)并繪制箱型圖和直方圖的相關(guān)資料,好的圖表能幫助我們深化數(shù)據(jù)的記憶點,文中通過圖文以及代碼示例將實現(xiàn)的方法介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • 基于Python編寫PDF轉(zhuǎn)EPUB以及MOBI工具

    基于Python編寫PDF轉(zhuǎn)EPUB以及MOBI工具

    當我們需要在電子閱讀器上閱讀這些文檔時,轉(zhuǎn)換為EPUB或MOBI格式會提供更好的閱讀體驗,所以本文將使用Python編寫一個PDF轉(zhuǎn)EPUB以及MOBI工具,需要的可以參考下
    2025-03-03
  • Python中分數(shù)的相關(guān)使用教程

    Python中分數(shù)的相關(guān)使用教程

    這篇文章主要介紹了Python中分數(shù)的相關(guān)使用教程,主要涉及分數(shù)的計算、約分等簡單操作,是Python學(xué)習(xí)過程當中的基礎(chǔ),需要的朋友可以參考下
    2015-03-03
  • Python讀寫TOML文件的示例代碼

    Python讀寫TOML文件的示例代碼

    TOML?文件表示(Tom's?Obvious,最小語言),它的語法主要由鍵=值對組成,本文主要為大家詳細介紹了如何使用Python讀寫TOML文件,感興趣的小伙伴可以了解下
    2023-08-08
  • Python下載網(wǎng)易云歌單歌曲的示例代碼

    Python下載網(wǎng)易云歌單歌曲的示例代碼

    這篇文章主要介紹了Python下載網(wǎng)易云歌單歌曲的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Python生態(tài)圈圖像格式轉(zhuǎn)換問題(推薦)

    Python生態(tài)圈圖像格式轉(zhuǎn)換問題(推薦)

    在Python生態(tài)圈里,最常用的圖像庫是PIL——盡管已經(jīng)被后來的pillow取代,但因為pillow的API幾乎完全繼承了PIL,所以大家還是約定俗成地稱其為PIL。這篇文章主要介紹了Python生態(tài)圈圖像格式轉(zhuǎn)換問題,需要的朋友可以參考下
    2019-12-12
  • Python實現(xiàn)隨機生成圖片驗證碼詳解

    Python實現(xiàn)隨機生成圖片驗證碼詳解

    這篇文章主要介紹了如何利用Python生成隨機的圖片驗證碼 并打印驗證碼的值,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起試試
    2022-01-01

最新評論