第一,兩者的功能不同,global關鍵字修飾變數后標識該變數是全域變數,對該變數進行修改就是修改全域變數,而nonlocal關鍵字修飾變數后標識該變數是上一級函式中的區域變數,如果上一級函式中不存在該區域變數,nonlocal位置會發生錯誤(最上層的函式使用nonlocal修飾變數必定會報錯),
第二,兩者使用的范圍不同,global關鍵字可以用在任何地方,包括最上層函式中和嵌套函式中,即使之前未定義該變數,global修飾后也可以直接使用,而nonlocal關鍵字只能用于嵌套函式中,并且外層函式中定義了相應的區域變數,否則會發生錯誤(見第一),
正常的
a = 1
def func():
a = 10
print(a)
func()
print(a)
運行結果:
10
1
使用global
a = 1
def func():
global a
a = 10
print(a)
func()
print(a)
運行結果:
10
10
使用nonlocal
a = 1
def func():
nonlocal a
a = 10
print(a)
func()
print(a)
運行結果:
10
0
總結:global 全域 nonlocal區域
轉自:https://blog.csdn.net/sinat_38682860/article/details/107815075
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/63457.html
標籤:Python
上一篇:編程小白的第一本python入門書 限時免費領取!!!
下一篇:100相同的樹
