Python?nonlocal關(guān)鍵字?與?global?關(guān)鍵字解析
python引用變量的順序: 當(dāng)前作用域局部變量->外層作用域變量->當(dāng)前模塊中的全局變量->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)鍵字進(jì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ù)。當(dāng)使用 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)文章希望大家以后多多支持腳本之家!
- Python函數(shù)中g(shù)lobal與nonlocal關(guān)鍵字的使用詳解
- 理解Python中的global與nonlocal關(guān)鍵字
- Python中nonlocal和global的區(qū)別及閉包使用
- Python中的global和nonlocal關(guān)鍵字的使用場景分析
- Python中的global與nonlocal關(guān)鍵字詳解
- 淺析Python中g(shù)lobal和nonlocal關(guān)鍵字的妙用
- Python關(guān)鍵字之global與nonlocal
- 系統(tǒng)講解Python函數(shù)中g(shù)lobal與nonlocal關(guān)鍵字的使用
相關(guān)文章
python GUI庫圖形界面開發(fā)之PyQt5時間控件QTimer詳細(xì)使用方法與實例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5時間控件QTimer詳細(xì)使用方法與實例,需要的朋友可以參考下2020-02-02
python 將list轉(zhuǎn)成字符串,中間用符號分隔的方法
今天小編就為大家分享一篇python 將list轉(zhuǎn)成字符串,中間用符號分隔的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
Python爬蟲圖片懶加載技術(shù) selenium和PhantomJS解析
這篇文章主要介紹了Python爬蟲圖片懶加載技術(shù) selenium和PhantomJS解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-09-09
Python?SQLAlchemy建立模型基礎(chǔ)關(guān)系模式過程詳解
SQLAlchemy是Python編程語言下的一款開源軟件。提供了SQL工具包及對象關(guān)系映射(ORM)工具,使用MIT許可證發(fā)行。SQLAlchemy“采用簡單的Python語言,為高效和高性能的數(shù)據(jù)庫訪問設(shè)計,實現(xiàn)了完整的企業(yè)級持久模型”。SQL數(shù)據(jù)庫的量級和性能重要于對象集合2022-12-12
Python流行ORM框架sqlalchemy安裝與使用教程
這篇文章主要介紹了Python流行ORM框架sqlalchemy安裝與使用,結(jié)合具體實例形式分析了sqlalchemy的安裝及ORM映射、查詢等相關(guān)操作技巧,需要的朋友可以參考下2019-06-06
keras 讀取多標(biāo)簽圖像數(shù)據(jù)方式
這篇文章主要介紹了keras 讀取多標(biāo)簽圖像數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06

