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

标签 python python-2.7 python-3.x

当您启动 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 ...

但是,这些模块似乎已加载到不同的范围/命名空间中,因为如果没有额外的 import 就无法访问它们:

>>> abc
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'abc' is not defined

这是我的问题:

  1. 加载这些模块的具体目的是什么?
  2. 它们被加载到什么范围/命名空间?

最佳答案

sys 模块正在将它们加载到 sys.modules 字典命名空间中

如果你想,我想你可以访问它们

abc = sys.modules["abc"]

但不确定为什么要这样做

关于python - 为什么不能在没有额外的 `import` 语句的情况下引用似乎由解释器自动加载的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30517948/

相关文章:

python - Django 管理错误截断了不正确的 DOUBLE 值 :""

python - 查看 numpy OrderedDict 中的值是否与另一个 OrderedDict 中的值相同的最快方法是什么?

python - 单独模块中的 Flask View

python - 在 Python 中动态计算 csv 列的出现次数

python - 后验高斯过程(Python)

python - Django Restful 中的 ListSerializer - 何时调用?

python - pandas matplotlib 调整大小和删除标签

Python在开始菜单中找到 "all programs"文件夹

python - 为什么正则表达式在 Python 2.7 中匹配一个额外的空格?

python - 自定义调度程序以具有带超时/终止开关的顺序 + 半顺序脚本?