簡單了解python關(guān)鍵字global nonlocal區(qū)別
第一,兩者的功能不同。global關(guān)鍵字修飾變量后標(biāo)識該變量是全局變量,對該變量進(jìn)行修改就是修改全局變量,而nonlocal關(guān)鍵字修飾變量后標(biāo)識該變量是上一級函數(shù)中的局部變量,如果上一級函數(shù)中不存在該局部變量,nonlocal位置會發(fā)生錯(cuò)誤(最上層的函數(shù)使用nonlocal修飾變量必定會報(bào)錯(cuò))。
第二,兩者使用的范圍不同。global關(guān)鍵字可以用在任何地方,包括最上層函數(shù)中和嵌套函數(shù)中,即使之前未定義該變量,global修飾后也可以直接使用,而nonlocal關(guān)鍵字只能用于嵌套函數(shù)中,并且外層函數(shù)中定義了相應(yīng)的局部變量,否則會發(fā)生錯(cuò)誤(見第一)。
正常的
a = 1def func(): a = 10 print(a)func()print(a)
運(yùn)行結(jié)果:
101
使用global
a = 1def func(): global a a = 10 print(a)func()print(a)
運(yùn)行結(jié)果:
1010
使用nonlocal
a = 1def func(): nonlocal a a = 10 print(a)func()print(a)
運(yùn)行結(jié)果:
100
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 基于springboot實(shí)現(xiàn)redis分布式鎖的方法2. 詳解JavaScript Alert函數(shù)執(zhí)行順序問題3. Django+Uwsgi+Nginx如何實(shí)現(xiàn)生產(chǎn)環(huán)境部署4. 使用EF Code First搭建簡易ASP.NET MVC網(wǎng)站并允許數(shù)據(jù)庫遷移5. Android Studio編寫AIDL文件后如何實(shí)現(xiàn)自動編譯生成6. Python unittest單元測試框架實(shí)現(xiàn)參數(shù)化7. iOS UIScrollView和控制器返回手勢沖突解決方法8. js的一些潛在規(guī)則示例分析9. Vue Element UI自定義描述列表組件10. .net core 中 WebApiClientCore的使用示例代碼
