簡單了解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
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. .net中string類型可以作為lock的鎖對(duì)象嗎2. 詳細(xì)總結(jié)Java for循環(huán)的那些坑3. Java進(jìn)行Appium自動(dòng)化測試的實(shí)現(xiàn)4. python 使用Tensorflow訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)鳶尾花分類5. 新手學(xué)python應(yīng)該下哪個(gè)版本6. php中PHPUnit框架實(shí)例用法7. uni-app結(jié)合PHP實(shí)現(xiàn)單用戶登陸demo及解析8. ajax實(shí)現(xiàn)頁面的局部加載9. 如何利用Python matplotlib繪制雷達(dá)圖10. PHP安全-過濾輸入

網(wǎng)公網(wǎng)安備