python – 为什么不能引用似乎由解释器自动加载的模块而没有额外的`import`语句?
发布时间:2021-01-11 08:03:10 所属栏目:Python 来源:互联网
导读:当您启动 Python解释器时,似乎在启动过程中会自动导入某些模块/包: pythonPython 2.7.6 (default, Jan 13 2014, 14:59:37)... import sys for key in sys.modules.iterkeys():... print(key)...ossysabcothers ... 但是,这些模块
当您启动 Python解释器时,似乎在启动过程中会自动导入某些模块/包: python Python 2.7.6 (default,Jan 13 2014,14:59:37) ... >>> import sys >>> for key in sys.modules.iterkeys(): ... print(key) ... os sys abc others ... 但是,这些模块似乎已加载到不同的范围/命名空间中,因为如果不进行其他导入,则无法访问它们: >>> abc Traceback (most recent call last): File "<stdin>",line 1,in <module> NameError: name 'abc' is not defined 这是我的问题: >究竟是什么装载这些模块以及用于什么目的? 解决方法在一个新的解释器启动时,sys.modules 将包含由Python自动加载的那些模块,因为它们执行Python解释器运行所必需的角色.例如,Python / pythonrun.c中的
Py_InitializeEx 包含类似的行
bimod = _PyBuiltin_Init(); 初始化__builtin__模块,其中builtins像int和open live,和 sysmod = _PySys_Init(); 初始化 至于加载这些模块的命名空间,模块并没有真正加载到命名空间中. import语句加载模块并将模块中的一个或多个项目分配给当前命名空间中的一个或多个变量,但模块加载和赋值是独立的步骤.像_PySys_Init这样的调用不会将模块分配到任何特定的命名空间.但是,导入机制将在 (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读