3

许多内置库尽可能使用 C 实现。

例如,在可用时heapq使用lib-dynload/_heapq.so

我在哪里可以找到模块的源代码_heapq

4

2 回答 2

2

3.3 版本中许多 C 模块的代码:http:
//hg.python.org/cpython/file/3.3/Modules

直接链接到 heapq 源:
http ://hg.python.org/cpython/file/3.3/Modules/_heapqmodule.c

于 2012-12-18T01:10:40.810 回答
2

要查看任何 CPython 版本的代码,请访问:

用 3.2、2.3 替换 3.3,不管是旧版本。如果您知道要查找的内容,也可以显式输入 hg 修订号而不是 major.minor 版本。

C 模块大多位于Modules子目录中,每个模块通常命名为foo.cor 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看到的相同。

于 2012-12-18T01:23:16.533 回答