1. 程式人生 > 程式設計 >簡單瞭解python關鍵字global nonlocal區別

簡單瞭解python關鍵字global nonlocal區別

第一,兩者的功能不同。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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。