[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

 

 

(本頁面已被瀏覽過 25,706 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料