這篇文章Python中關鍵字nonlocal和global的聲明與解析介紹的相關資料,文中介紹的非常詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
一、Python中global與nonlocal 宣告
#如下程式碼
a = 10 def foo(): a = 100
執行foo() 結果a 還是10
#函數
變數的賦值,變數總是綁定到函數的局部命名空間,使用global 語句可以改變這個行為。
>>> a 10 >>> def foo(): ... global a ... a = 100 ... >>> a 10 >>> foo() >>> a 100
儘管可以層層向外(上)查找變量,但是! ..python2 只支援最裡層作用域(局部變量)和全域命令空間(gloabl),也就是說內部函數不能給定義在外部函數中的局部變數重新賦值,例如下面程式碼是不起作用的
#
def countdown(start): n = start def decrement(): n -= 1
def countdown(start): n = start def decrement(): nonlocal n n -= 1
nonlocal
首先,要先明確nonlocal 關鍵字是定義在閉包裡面的。請看以下程式碼:
x = 0 def outer(): x = 1 def inner(): x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
#
# inner: 2 # outer: 1 # global: 0
x = 0 def outer(): x = 1 def inner(): nonlocal x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
結果
# inner: 2 # outer: 2 # global: 0
x = 0 def outer(): x = 1 def inner(): global x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
# inner: 2 # outer: 1 # global: 2
以上是Python中關鍵字nonlocal和global的宣告與解析介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!