加载的模块和初始化的模块之间的区别?

鲍勃·霍尔弗

参考手册中指出:

完整的Python程序在最小化的初始化环境中执行:所有内置模块和标准模块都可用,但是除了sys(各种系统服务),builtins(内置函数,异常和None和)和之外,没有一个模块已经初始化__main__

我不确定“初始化”在这里是什么意思。我一直认为,如果模块已加载并存在于中,则会对其进行初始化sys.modules

这是将模块名称映射到已经加载的模块的字典。

显然,我错了,因为它sys.modules包含许多其他模块:

python -c "import sys; print(sys.modules.keys() - {'sys', 'builtins', '__main__'})"
{'_stat', 'encodings.aliases', '_sitebuiltins', '_thread', 'io', '_weakrefset', 'genericpath', 'encodings.utf_8', 'codecs', 'os', '_weakref', '_codecs', '_frozen_importlib', '_io', '_frozen_importlib_external', 'os.path', '_warnings', '_bootlocale', '_signal', 'errno', '_imp', 'encodings.latin_1', 'sysconfig', 'marshal', 'encodings', 'usercustomize', 'site', 'posixpath', '_collections_abc', 'posix', '_sysconfigdata_m_linux_x86_64-linux-gnu', 'encodings.cp437', 'abc', 'zipimport', 'stat', '_locale'}

初始化模块和加载模块之间有什么区别?我正在使用Python 3。

user2357112支持Monica

自编写文档以来,语言初始化变得更加复杂。(至少从Python 1.4开始,它几乎没有什么变化。)所有这些模块sys.modules都已完全加载并初始化。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章