Python?nonlocal關(guān)鍵字?與?global?關(guān)鍵字解析
python引用變量的順序: 當前作用域局部變量->外層作用域變量->當前模塊中的全局變量->python內(nèi)置變量
1.nonlocal
nonlocal關(guān)鍵字用來在函數(shù)或其他作用域中使用外層(非全局)變量。
首先:要明確 nonlocal
關(guān)鍵字是定義在閉包里面的。
請看以下代碼:
x = 0 def outer(): ? ? x = 1 ? ? def inner(): ? ? ? ? x = 2 ? ? ? ? print("inner:", x) ? ? inner() ? ? print("outer:", x) outer() print("global:", x)
結(jié)果:
# inner: 2
# outer: 1
# global: 0
現(xiàn)在,在閉包里面加入nonlocal關(guān)鍵字進行聲明:
x = 0 def outer(): ? ? x = 1 ? ? def inner(): ?? ??? ?nonlocal x ? ? ? ? x = 2 ? ? ? ? print("inner:", x) ? ? inner() ? ? print("outer:", x) outer() print("global:", x)
結(jié)果:
# inner: 2
# outer: 2
# global: 0
看到區(qū)別了么?這是一個函數(shù)里面再嵌套了一個函數(shù)。當使用 nonlocal
時,就聲明了該變量不只在嵌套函數(shù)inner()
里面才有效, 而是在整個大函數(shù)里面都有效。
2.global
global
關(guān)鍵字用來在函數(shù)或其他局部作用域中使用全局變量。但是如果不修改全局變量也可以不使用global
關(guān)鍵字。
還是一樣,看一個例子:
x = 0 def outer(): ? ? x = 1 ? ? def inner(): ? ? ? ? global x ? ? ? ? x = 2 ? ? ? ? print("inner:", x) ? ? inner() ? ? print("outer:", x) outer() print("global:", x)
結(jié)果:
# inner: 2
# outer: 1
# global: 2
global
是對整個環(huán)境下的變量起作用,而不是對函數(shù)類的變量起作用。
到此這篇關(guān)于Python nonlocal關(guān)鍵字 與 global 關(guān)鍵字解析的文章就介紹到這了,更多相關(guān)nonlocal 與 global 關(guān)鍵字內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django imgareaselect手動剪切頭像實現(xiàn)方法
這篇文章主要介紹了Django imgareaselect手動剪切頭像實現(xiàn)方法,實例分析了Django框架操作圖片的相關(guān)技巧,需要的朋友可以參考下2015-05-05利用For循環(huán)遍歷Python字典的三種方法實例
字典由多個鍵和其對應(yīng)的值構(gòu)成的鍵—值對組成,鍵和值中間以冒號:隔開,項之間用逗號隔開,整個字典是由大括號{}括起來的,下面這篇文章主要給大家介紹了關(guān)于如何利用For循環(huán)遍歷Python字典的三種方法,需要的朋友可以參考下2022-03-03將本地Python項目打包成docker鏡像上傳到服務(wù)器并在docker中運行
Docker是一個開源項目,為開發(fā)人員和系統(tǒng)管理員提供了一個開放平臺,可以將應(yīng)用程序構(gòu)建、打包為一個輕量級容器,并在任何地方運行,這篇文章主要給大家介紹了關(guān)于將本地Python項目打包成docker鏡像上傳到服務(wù)器并在docker中運行的相關(guān)資料,需要的朋友可以參考下2023-12-12Python實現(xiàn)提取或替換PPT中文本與圖片的示例代碼
這篇文章主要為大家詳細介紹了Python如何實現(xiàn)提取保存ppt中的圖片和替換ppt模板的文本,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2023-01-01anaconda?部署Jupyter?Notebook服務(wù)器過程詳解
這篇文章主要為大家介紹了anaconda?部署Jupyter?Notebook服務(wù)器過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09