Python中的'_modname'内置模块是什么?它们用于什么?

时间:2016-01-28 19:50:06

标签: python module

我可能会遗漏文档中的某些内容,但我无法找到它并且谷歌搜索并不是一个微不足道的尝试。

在查看importlib模块时,我注意到它使用import _imp语句导入_imp以获取其他一些功能。显然,Python包含了可导入且(无需测试)可用的_<modname>个模块。

使用ipython下划线模块列表显示其中有很多:

In [2]: import _
__future__           _elementtree         _sha512
_ast                 _functools           _signal
_bisect              _hashlib             _sitebuiltins
_bootlocale          _heapq               _socket
_bz2                 _imp                 _sqlite3

列表继续。这些模块当然是可导入的,显然是功能性的:

In [2]: import _imp

In [3]: _imp
Out[3]: <module '_imp' (built-in)>

考虑PEP 8我会假设它们是给定模块的内部私有详细信息,这个假设是否正确?如果没有,它们用于什么?

1 个答案:

答案 0 :(得分:1)

_前缀通常表示模块是用C语言编写的,通常通过纯Python包装器使用,而不是直接使用。例如,socket模块开始

import _socket
from _socket import *

意味着socket正在使_socket导出的项目可用。