Python 函數內預設建立區域變數,若需修改全域變數必須使用 global 關鍵字聲明。本文說明語法、多變數聲明、常見錯誤與最佳實踐。
x = 50
def func():
global x
print 'x is', x
x = 2
print 'Change local x to', x
func()
print 'Global x now:', x
# 輸出:
# x is 50
# Change local x to 2
# Global x now: 2
global x, y, z
# 或
global x
global y
global z
x = 10
def func():
x = 20 # 建立新區域變數 x,全域 x 不變
func()
print x # 10
def func():
print x # UnboundLocalError!
global x
x = 20
global 必須在函數開頭聲明,在此之前不可引用該變數。
MAX_RETRY = 3(慣例不可變)class Config: DEBUG = True| 關鍵字 | 作用域 | Python 版本 |
|---|---|---|
global | 模組全域 | 所有版本 |
nonlocal | 外層巢狀函數 | Python 3+ |