[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
(本頁面已被瀏覽過 25,706 次)