在两个不同的模块中从同一模块导入相同的对象:

时间:2015-10-02 15:16:51

标签: python object module namespaces

module1.py:

from somemod import something
import module2

module2.py:

from somemod import something

something中的module1something中的module2完全相同吗?

例如,如果在导入module2之前,module1将执行something.val = 10。 module2可以通过something.val获取值吗?或者是否有不同的对象?

提出不同的问题: import执行导入的模块,即使它已经在解释器会话中导入了另一个模块吗?

另外,如果module1已导入它,是否需要在module2中from somemod import something

1 个答案:

答案 0 :(得分:5)

这是同一个对象。与Python中的其他所有模块一样,模块是存在于内存中并由名称引用的对象。 import语句执行两项操作:一,如果请求的模块尚不存在,则执行导入文件中的代码和两个,使其作为模块可用。后续导入语句将跳过第一步。这意味着在module1中,名称module1.somethingmodule1.module2.something都引用了第一次导入somemod时创建的同一对象。