簡單了解python關(guān)鍵字global nonlocal區(qū)別
第一,兩者的功能不同。global關(guān)鍵字修飾變量后標識該變量是全局變量,對該變量進行修改就是修改全局變量,而nonlocal關(guān)鍵字修飾變量后標識該變量是上一級函數(shù)中的局部變量,如果上一級函數(shù)中不存在該局部變量,nonlocal位置會發(fā)生錯誤(最上層的函數(shù)使用nonlocal修飾變量必定會報錯)。
第二,兩者使用的范圍不同。global關(guān)鍵字可以用在任何地方,包括最上層函數(shù)中和嵌套函數(shù)中,即使之前未定義該變量,global修飾后也可以直接使用,而nonlocal關(guān)鍵字只能用于嵌套函數(shù)中,并且外層函數(shù)中定義了相應(yīng)的局部變量,否則會發(fā)生錯誤(見第一)。
正常的
a = 1def func(): a = 10 print(a)func()print(a)
運行結(jié)果:
101
使用global
a = 1def func(): global a a = 10 print(a)func()print(a)
運行結(jié)果:
1010
使用nonlocal
a = 1def func(): nonlocal a a = 10 print(a)func()print(a)
運行結(jié)果:
100
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 詳解Android studio 動態(tài)fragment的用法2. Android如何加載Base64編碼格式圖片3. 什么是python的自省4. 基于android studio的layout的xml文件的創(chuàng)建方式5. 解決Android studio xml界面無法預覽問題6. .Net Core使用Coravel實現(xiàn)任務(wù)調(diào)度的完整步驟7. 圖文詳解vue中proto文件的函數(shù)調(diào)用8. Vuex localStorage的具體使用9. 編程語言PHP在Web開發(fā)領(lǐng)域的優(yōu)勢在哪?10. 在IDEA中實現(xiàn)同時運行2個相同的java程序

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