2014-10-29 123 views
4

說我有兩個Python文件有沒有辦法在importee中獲得進口商變量?

# importer.py 
parameter = 4 
import importee 

# importee.py 
print parameter 

我可以和我怎麼能在importee.py訪問importer.pyparameter

我使用的是圍繞一個醜陋的工作,借(和污染)的sys

# importer.py 
import sys 
sys.parameter = 4 
import importee 

# importee.py 
print sys.parameter 

太難看。 尋找更好的解決方案。

+2

這將導致循環導入,通常是設計問題的標誌。你爲什麼認爲你需要這樣做? – IanAuld 2014-10-29 08:07:35

+0

@IanAuld在我的例子中,我希望用一些「參數」導入** importee **模塊。 – 2014-10-29 08:09:22

+1

你打算用它做什麼? – 2014-10-29 08:10:40

回答

4

推薦的方式來實現我想你想實現的是在importee申報功能,並調用它,如:

# importer.py 
import importee 
importee.call_me(4) 

和:

# importee.py 
def call_me(parameter): 
    print(parameter) 

最好是避免在全球範圍內執行任何操作。尤其是print()什麼,但我想你最小的例子不符合你的真實用例:)。


順便說一下,您所提到的醜陋的工作實際上等同於使用單獨的配置模塊。例如:

# importer.py 
import config 
config.param = 4 
import importee 

+

# importee.py 
import config 
print(config.param) 

+

# config.py 
param = 7 # some default 

它仍然無處接近漂亮,但至少避免了與系統模塊重整。

+1

+1給出兩個不同和合理的選項(恕我直言)。我發現''import config''方法相當不錯,在某些情況下它可以挽救生命。只有當第一種推薦的方式是不可能的時候,ofc。 – MariusSiuram 2014-10-29 08:35:44

+0

愛你的兩個解決方案。選擇第一個。非常感謝! – 2014-11-02 10:02:25

相關問題