关于 Python 内部结构的问题。如果我执行 import abc
,Python 会将模块读入一个新的命名空间,并绑定(bind)全局命名空间中的变量 abc
以指向新的命名空间。
如果我执行 from abc import xyz
然后它读取整个模块 abc
到一些新的命名空间然后绑定(bind)变量 xyz
全局命名空间到绑定(bind)到 xyz
的同一个对象,在这个新创建的命名空间中,模块被读入。至少这是我的理解。
之后 abc
被读入的命名空间发生了什么?我假设它存在于某个地方,因为 xyz
可能会访问该命名空间中的其他对象。这个“幽灵”abc
命名空间能否以某种方式访问?
此外,我假设如果我这样做
from abc import xyz
from abc import fgh
那么只有一个“幽灵”abc
命名空间,所以如果 xyz
和 fgh
修改 中的同一个全局变量abc
,只会有一份。对吗?
最佳答案
模块对象存储在sys.modules
中。因此,如果您执行 from abc import xyz
,则 sys.modules['abc']
将为您提供 abc
模块对象。
关于python - 执行 `from abc import xyz` 模块 `abc`去哪了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36481342/