2013-08-02 32 views
1

我有兩個文件random1.py,random2.py如何在Python中的單獨文件中使用全局變量和函數?

random2.py有

def your(): 
    global mine 
    mine = 10 

random1.py有

import random2.py 

global mine 
mine = 4 
random.your() 
print mine 

random1.py打印出4未10

我的最終目標是具有可以接受已聲明的任何可能變量的函數,並且在函數爲ru之後可以使用該變量的新值ñ。儘管對於組織來說,我將所有功能都放在單獨的文件中。我注意到,如果我將它們放在同一個文件中,它就可以工作

我試圖從特設

+0

複製程序的功能,該代碼將不會打印'4';它會死於一個'ImportError'。無論如何,這是一個糟糕的主意,Python不會輕易讓你做到這一點。使用參數將數據傳遞到函數並返回值以將數據傳遞出去會更好。 – user2357112

+0

關鍵字'global'具有一個令人誤解的名稱,因爲它訪問它所在模塊(=腳本文件)的名稱空間的變量 –

回答

0
Could you please directly use **random2.mine** instead of declaring it global again, which makes separate copy of mine variable in random1's namespace. 

random2.mine = 50 
print(random2.mine) 


# Another way of modifying attributes of imported module is 
random2.__dict__[mine] = 100 
print(random2.mine) 

http://docs.python.org/2/tutorial/classes.html#python-scopes-and-namespaces 
http://stackoverflow.com/questions/6841853/python-accessing-module-scope-vars