2013-03-24 65 views
6

我試圖在某些函數中聲明一些全局變量,並將這些函數的文件導入到另一個函數中。但是,我發現在第二個文件中運行該函數不會創建全局變量。我試圖創建具有相同名稱的另一個變量,但是當我打印出來的變量,它打印出的第二個文件,而不是全球價值Python全局變量作用域

globals.py

def default(): 
    global value 
    value = 1 

main.py

的價值
from globals import * 
value = 0 
def main(): 
    default() 
    print value 

if __name__=='__main__': 
    main() 

這將打印0.如果我沒有value = 0在主,程序會出錯(值沒有定義)。

如果我在globals.py外的函數的聲明valuemain.py將在全球value的價值,而不是在default()

設置的值是什麼讓value是一個全局變量的正確方法在python中?

回答

5

Python中的全局變量只對其模塊是全局的。沒有可以修改的名稱,這些名稱在整個流程中都是全局的。

可以完成你想有什麼用:

globals.py:

value = 0 
def default(): 
    global value 
    value = 1 

main.py:

import globals 
def main(): 
    globals.default() 
    print globals.value 

if __name__ == "__main__": 
    main() 

我不知道是否全球像這樣的儘管如此,解決您的問題的最佳途徑。