许多内置库尽可能使用 C 实现。
例如,在可用时heapq
使用lib-dynload/_heapq.so
。
我在哪里可以找到模块的源代码_heapq
?
3.3 版本中许多 C 模块的代码:http:
//hg.python.org/cpython/file/3.3/Modules
直接链接到 heapq 源:
http ://hg.python.org/cpython/file/3.3/Modules/_heapqmodule.c
要查看任何 CPython 版本的代码,请访问:
用 3.2、2.3 替换 3.3,不管是旧版本。如果您知道要查找的内容,也可以显式输入 hg 修订号而不是 major.minor 版本。
C 模块大多位于Modules
子目录中,每个模块通常命名为foo.c
or foomodule.c
,而 Python 库位于Lib
子目录中,命名为foo.py
。
在 的情况下heapq
,实际heapq
模块在 Python ( Lib/heapq.py
) 中,但它使用名为_heapq
( Modules/_heapqmodule.c
) 的 C 模块。
当然你也可以下载源码。在http://python.org的首页上,有最新的 2.x 和 3.x 版本的“源代码分发”的“快速链接”,或者您可以单击下载所有其他版本。如您所料,该结构与您在http://hg.python.org看到的相同。