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

Importing the same object from the same module, in two different modules:

module1.py:

from somemod import something
import module2

module2.py:

from somemod import something

module1 中的 something 是否与 module2 中的 something 完全相同?

例如,如果在导入模块 2 之前,模块 1 会做 something.val = 10。 module2可以通过something.val得到值吗?或者它得到一个不同的对象?

不同的问题:是否 import 执行一个导入的模块,即使它已经导入到解释器会话中,在不同的模块中?

另外,如果module1已经导入了,还需要在module2中from somemod import something吗?

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