许多内置库尽可能使用C实现。
例如,heapq
使用lib-dynload/_heapq.so
(如果可用)。
在哪里可以找到_heapq
等模块的源代码?
答案 0 :(得分: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
答案 1 :(得分:2)
要查看任何版本的CPython的代码,请转到:
将3.3替换为3.2,2.3,无论旧版本如何。如果你知道你在寻找什么,你也可以明确地输入一个hg版本号而不是一个major.minor版本。
C模块主要位于Modules
子目录中,每个子模块通常命名为foo.c
或foomodule.c
,而Python库位于Lib
子目录中,命名为foo.py
。
对于heapq
,实际的heapq
模块使用Python(Lib/heapq.py
),但它使用名为_heapq
的{C}模块Modules/_heapqmodule.c
)。
当然您也可以下载源代码。在http://python.org的首页上有最新2.x和3.x版本的“Source Distribution”的“快速链接”,或者您可以单击“下载”以获取所有其他版本。正如您所期望的那样,您可以在http://hg.python.org看到相同的结构。