2014-10-29 80 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

相关问题