簡單瞭解python關鍵字global nonlocal區別
阿新 • • 發佈:2020-09-22
第一,兩者的功能不同。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
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。