簡(jiǎn)單了解python關(guān)鍵字global nonlocal區(qū)別
第一,兩者的功能不同。global關(guān)鍵字修飾變量后標(biāo)識(shí)該變量是全局變量,對(duì)該變量進(jìn)行修改就是修改全局變量,而nonlocal關(guān)鍵字修飾變量后標(biāo)識(shí)該變量是上一級(jí)函數(shù)中的局部變量,如果上一級(jí)函數(shù)中不存在該局部變量,nonlocal位置會(huì)發(fā)生錯(cuò)誤(最上層的函數(shù)使用nonlocal修飾變量必定會(huì)報(bào)錯(cuò))。
第二,兩者使用的范圍不同。global關(guān)鍵字可以用在任何地方,包括最上層函數(shù)中和嵌套函數(shù)中,即使之前未定義該變量,global修飾后也可以直接使用,而nonlocal關(guān)鍵字只能用于嵌套函數(shù)中,并且外層函數(shù)中定義了相應(yīng)的局部變量,否則會(huì)發(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
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Django中shell命令的使用2. jsp+servlet簡(jiǎn)單實(shí)現(xiàn)上傳文件功能(保存目錄改進(jìn))3. CSS3實(shí)現(xiàn)動(dòng)態(tài)翻牌效果 仿百度貼吧3D翻牌一次動(dòng)畫特效4. Python遠(yuǎn)程linux執(zhí)行命令實(shí)現(xiàn)5. 利用CSS制作3D動(dòng)畫6. Android WebView通過動(dòng)態(tài)的修改js去攔截post請(qǐng)求參數(shù)實(shí)例7. 利用ajax+php實(shí)現(xiàn)商品價(jià)格計(jì)算8. asp.net core項(xiàng)目授權(quán)流程詳解9. 用xslt+css讓RSS顯示的跟網(wǎng)頁一樣漂亮10. ASP動(dòng)態(tài)網(wǎng)頁制作技術(shù)經(jīng)驗(yàn)分享
