关于Python内部的问题。如果我执行import abc
,那么Python会将模块读入新的命名空间,并将全局命名空间中的变量abc
绑定到指向新的命名空间。
如果我执行from abc import xyz
,它会将整个模块abc
读入一个新的命名空间,然后将全局命名空间中的变量xyz
绑定到绑定到{{{ 1}}在这个新创建的命名空间中,模块被读入。至少这是我的理解。
在此之后读取xyz
的命名空间会发生什么?我假设它存在于某个地方,因为abc
可能会访问该命名空间中的其他对象。可以以某种方式访问这个“ghost”xyz
命名空间吗?
另外,我假设如果我这样做
abc
然后只有一个“ghost”from abc import xyz
from abc import fgh
命名空间,因此如果abc
和xyz
修改fgh
中的同一个全局变量,则只会有一个副本它的。这是对的吗?
答案 0 :(得分:6)
模块对象存储在sys.modules
中。因此,如果您执行from abc import xyz
,那么sys.modules['abc']
将为您提供abc
模块对象。