2011-10-12 143 views
3

我有兩個模塊,a.py和b.py.我想從a.py的全局在這樣b.py可用:如何在導入的模塊之間共享全局變量?

a.py:

#!/usr/bin/env python 
var = "this is global" 
import b 
b.foo() 

b.py:

#!/usr/bin/env python 
var = "this is global" 
def foo(): 
    print var 

目前,我重新申報每個模塊中的全局變量。必須有一個更簡單的方法。

+0

這是沒有意義的。你想在'b'上輸入''並且他們'輸出a.var' – JBernardo

+0

抱歉,剛剛更新。 – tahoar

+0

@JBernardo:不,那會導致循環導入。 – WilHall

回答

2

創建一個共享全局變量的設置模塊,如果這是你想要的。這樣,您只需導入並引用每個全局的一次,並且將它們隔離在設置模塊的名稱空間內。這是一件好事。

#settings.py 
var = 'this is global' 

# a.py 
import settings 
import b 
b.foo() 

# b.py 
import settings 
def foo(): 
    print settings.var 
+0

謝謝大家。說得通。現在需要完成工作並搜索/替換我的85個模塊(插件)。 – tahoar

2

通過讓a.py中的b.py需要全局變量,您已經創建了相互依賴的類,這是糟糕的設計。

如果你有靜態變量需要共享,考慮創建c.py這兩個a.pyb.py可以導入和參考。

如果你有動態變量需要共享,可以考慮創建一個設置類,它可以被實例化和模塊之間傳遞。

2

定義您的全局數據c.py並將它們導入a.py和b.py

相關問題