您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 为什么不能引用似乎由解释器自动加载的模块而没有额外的`import`语句?

5b51 2022/1/14 8:22:40 python 字数 1901 阅读 557 来源 www.jb51.cc/python

当您启动 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 ... 但是,这些模块

概述

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

这是我的问题:

>究竟是什么装载这些模块以及用于什么目的?
>他们加载了什么范围/命名空间?

bimod = _PyBuiltin_Init();

初始化__builtin__模块,其中builtins像int和open live,和

sysmod = _PySys_Init();

初始化sys模块.

至于加载这些模块的命名空间,模块并没有真正加载到命名空间中. import语句加载模块并将模块中的一个或多个项目分配给当前命名空间中的一个或多个变量,但模块加载和赋值是独立的步骤.像_PySys_Init这样的调用不会将模块分配到任何特定的命名空间.但是,导入机制将在sys.modules中记录当前Python执行中由任何代码加载的任何模块,因此进一步导入不会重新执行该模块并创建新副本.

总结

以上是编程之家为你收集整理的python – 为什么不能引用似乎由解释器自动加载的模块而没有额外的`import`语句?全部内容,希望文章能够帮你解决python – 为什么不能引用似乎由解释器自动加载的模块而没有额外的`import`语句?所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶