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

Avi*_*ohn 3 python namespaces module object

module1.py:

from somemod import something
import module2
Run Code Online (Sandbox Code Playgroud)

module2.py:

from somemod import something
Run Code Online (Sandbox Code Playgroud)

somethingmodule1完全相同的对象somethingmodule2

例如,如果在导入module2之前,module1会这样做something.val = 10.module2可以通过这样做获得价值something.val吗?或者它得到一个不同的对象?

换句话说:即使它已经在解释器会话中导入到另一个模块中,它是否import执行导入的模块?

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

che*_*ner 5

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