Python 是否存在隐式导入/加载的模块?
使用默认值启动交互式Python解释器时 设置,是否有任何模块隐式导入/加载到 解释器,不显式运行Python 是否存在隐式导入/加载的模块?,python,python-3.x,Python,Python 3.x,使用默认值启动交互式Python解释器时 设置,是否有任何模块隐式导入/加载到 解释器,不显式运行import 我原以为像sys或内置的这样的模块会是 键入它们的模块名称 >>> sys Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'sys' is not defined >>> builtins Tr
import
我原以为像sys
或内置的
这样的模块会是
键入它们的模块名称
>>> sys
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'sys' is not defined
>>> builtins
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'builtins' is not defined
>>系统
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
NameError:未定义名称“sys”
>>>内置
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
NameError:未定义名称“内置”
那么,默认情况下,没有隐式导入/加载的模块是正确的吗
谢谢。通常自动导入的一个模块是site.py。它还导入了许多其他模块。但是,即使您使用选项
-S
阻止它导入,Python仍然会导入许多模块。请尝试以下脚本:
#! /usr/bin/python2.7 -ESs
import sys
print(sys.modules)
看看有多少模块。将shebang更改为
#! /usr/bin/python3 -EISs
然后说“哇!”:-)仅限内置设备:
#! /usr/bin/python2.7 -ESs
print(dir())
=>[''.'内置'.'.'文档'.'.'文件'.'.''.'.'.'.'名称'.'.'.''.'.'.'包'.'.'.'.'.'.'.'.''.'可能有,但不在全局命名空间中。试试python-v。同样,这些模块是导入的,当您实际写入
import
,而它们不在全局命名空间中时不必“重新加载”。请参见globals()
您将发现内置的模块和。默认情况下这两个都已加载。@ChihebNexus谢谢。在python3中,如果默认情况下隐式加载模块builtins
,为什么名称builtins
不可用(请参阅我文章中的输出)?@Tim,这有点棘手。我真的认为这是一个影子进口。实际上,默认情况下导入的是\uuuuuuuuuuuuuuuuuuuuuu
,而不是内置的。但是,如果查看globals()
,您将看到默认情况下导入了\uuuuuuuuuuuu内置项。和\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
导入后,将抛出与内置函数相同的结果。所以,我想,如果我错了,请纠正我,这是解释器默认行为中的影子导入。谢谢。默认情况下,sys
本身是否已加载?我想你的方式可以;不显示。已加载sys.modules
中列出的所有模块,但它们不在module内置中,因此它们在当前命名空间中不自动可用。你还得进口。谢谢。哪些模块在当前名称空间中自动可用,即无需我导入它们?