天天看點

Python3 命名空間和作用域

若沒有使用 global 或 nonlocal 關鍵字對局部變量進行聲明,在局部作用域中,可以通路全局命名空間中的變量,不可對其進行指派。

對于教程中的這個執行個體:

運作後如下:(提示出錯)

若程式改為如下:

運作結果:(正常運作)

在函數 test() 中,可以讀取全局命名空間中的 “a”,對應語句 “b=a+1”。

即在局部作用域中,可以通路全局命名空間中的變量。

運作:(提示出錯)

錯誤的原因在于語句 “a=b”,對 “a” 進行指派是不可以的。

即在函數 test() 中,不可以直接對全局命名空間中的 “a” 進行指派。

運作:(正常運作)

語句 “global a” 聲明了 “a” 采用全局命名空間中的 “a”,這樣便可在函數 test() 中,對全局命名空間中的 “a” 直接進行指派了。

若使用了 global 或 nonlocal 關鍵字對局部變量進行聲明,在局部作用域中,可以通路全局命名空間中的變量,也可對其進行指派。

故,在局部作用域中,若想使用外部命名空間中的變量,應使用 global 或 nonlocal 關鍵字進行聲明。