我有兩個模塊,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
目前,我重新申報每個模塊中的全局變量。必須有一個更簡單的方法。
我有兩個模塊,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
目前,我重新申報每個模塊中的全局變量。必須有一個更簡單的方法。
創建一個共享全局變量的設置模塊,如果這是你想要的。這樣,您只需導入並引用每個全局的一次,並且將它們隔離在設置模塊的名稱空間內。這是一件好事。
#settings.py
var = 'this is global'
# a.py
import settings
import b
b.foo()
# b.py
import settings
def foo():
print settings.var
謝謝大家。說得通。現在需要完成工作並搜索/替換我的85個模塊(插件)。 – tahoar
通過讓a.py中的b.py需要全局變量,您已經創建了相互依賴的類,這是糟糕的設計。
如果你有靜態變量需要共享,考慮創建c.py這兩個a.py和b.py可以導入和參考。
如果你有動態變量需要共享,可以考慮創建一個設置類,它可以被實例化和模塊之間傳遞。
定義您的全局數據c.py並將它們導入a.py和b.py
這是沒有意義的。你想在'b'上輸入''並且他們'輸出a.var' – JBernardo
抱歉,剛剛更新。 – tahoar
@JBernardo:不,那會導致循環導入。 – WilHall