[Python] 在函式裡使用全域變數要加 global

[Python] 在函式裡使用全域變數要加 global

今天在改一個 python 程式時,踩到了全域變數的雷了…

我在一個函式裡,指定全域變數的新值,

在函式裡運作都正常,可是脫離目前函式後,就失敗了:

g_data = None
def foo():
print "data in foo:", g_data
def main():
g_data = 1
print "data in main:", g_data
foo()
main()

 

執行結果如下,在 main() 裡面有得到正確的 g_data 值,

但呼叫 foo() 時拿到的是初始值:

data in main: 1
data in foo: None

 

查了一下 stackoverflow: Python function global variables?

原來要存取全域變數,要使用 global <variable name> 指令才行,

太久沒用都忘了…

 

修正後的程式如下:

g_data = None
def foo():
print "data in foo:", g_data
def main():
global g_data
g_data = 1
print "data in main:", g_data
foo()
main()

 

修正後的執行結果如下,一切就正常囉:

data in main: 1
data in foo: 1

 

 

(本頁面已被瀏覽過 2,904 次)

發表迴響

你的電子郵件位址並不會被公開。