如何找到内置Python函数的源代码?

241 投票
8 回答
197698 浏览
提问于 2025-04-17 08:52

有没有办法查看Python内置函数是怎么工作的?我不是说只是怎么使用它们,而是想知道它们是怎么构建的,比如sorted或者enumerate背后的代码是什么样的……?

8 个回答

48

我花了一些时间才找到以下这些内置函数的来源,因为搜索结果会有成千上万条。(祝你好运,去找这些函数的来源)

总之,所有这些函数都是在bltinmodule.c文件中定义的。函数的命名格式是builtin_{函数名}

内置函数的来源:https://github.com/python/cpython/blob/master/Python/bltinmodule.c

关于内置类型的来源: https://github.com/python/cpython/tree/master/Objects

49

这里有一个简单的步骤指南,来补充一下@Chris的回答。CPython已经迁移到GitHub上,之前的Mercurial仓库将不再更新:

  1. 如果你还没有安装Git,请先安装它。
  2. git clone https://github.com/python/cpython.git

  3. 代码会被下载到一个叫做cpython的子文件夹里 -> 输入cd cpython进入这个文件夹

  4. 假设我们想找print()这个函数的定义...
  5. egrep --color=always -R 'print' | less -R
  6. 哦!看到了!在Python/bltinmodule.c文件里找到了builtin_print()

祝你好运!

217

因为Python是开源的,你可以查看它的源代码

如果你想知道某个模块或函数是在哪个文件里实现的,通常可以打印出__file__这个属性。或者,你也可以使用inspect模块,具体可以参考文档中关于获取源代码的部分。

对于内置的类和方法,这就没那么简单了,因为inspect.getfileinspect.getsource会返回一个类型错误,提示这个对象是内置的。不过,很多内置类型可以在Python源代码主目录下的Objects子目录找到。例如,你可以在这里查看enumerate类的实现,或者在这里查看list类型的实现。

撰写回答