sys模块内置在每个python解释器中意味着什么



我正在学习Python的官方教程,上面写着

有一个特别的模块值得关注:sys,它内置在每个Python解释器中。

但是,如果我启动python解释器并键入,例如sys.path,我会得到一个NameError: name sys is not defined

因此,如果我想访问sys,我需要导入它。

那么,它"内置在每个python解释器中"意味着什么呢?

它只是意味着

import sys

将成功,无论您使用的是哪种版本的Python。它与每一个Python安装程序一起提供。相反,例如

import mpmath

将失败,除非您自己安装了mpmath包,或者它与您正在使用的特定Python安装捆绑在一起。

那么它"内置在每个python解释器中"意味着什么呢?

sys模块是用C编写的,并编译到Python解释器中。根据解释器的版本,可能会有更多这样的模块——sys.builtin_module_names列出了所有模块
正如您所注意到的,内置模块仍然需要像任何其他扩展一样进行import编辑。

>>> import sys
>>> sys.builtin_module_names
('_ast', '_codecs', '_collections', '_functools', '_imp', '_io', '_locale', '_operator', '_signal', '_sre', '_stat', '_string', '_symtable', '_thread', '_tracemalloc', '_warnings', '_weakref', 'atexit', 'builtins', 'errno', 'faulthandler', 'gc', 'itertools', 'marshal', 'posix', 'pwd', 'sys', 'time', 'xxsubtype', 'zipimport')

sys模块是用C编写的,并编译到Python解释器中。根据解释器的>版本,可能会有更多的此类>模块——sys.builtin_module_names>列出了所有模块。

值得强调的是,"sys"模块内置在Python解释器、CPython或JPython或其他程序中。

您将找不到像普通模块那样的"sys.py"。

帮助(sys(将显示以下信息

Help on built-in module sys:
NAME
sys
FILE
*(built-in)*

相比之下:帮助

Help on module os:
NAME
os - OS routines for Mac, NT, or Posix depending on what system we're on.
FILE
*/usr/lib64/python2.7/os.py*

与C相比,"sys"在某种程度上可以被视为LIBC("LIBC.so.7"(的一部分

最新更新