在两个不同的模块中从同一个模块导入同一个对象:
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.something
和 module1.module2.something
都指的是第一次导入 somemod
时创建的同一个对象。
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.something
和 module1.module2.something
都指的是第一次导入 somemod
时创建的同一个对象。