寻找内置Python函数的源代码?

可能重复:
关于在sort()方法中构build的python

有没有办法看到如何build立在Python的function工作? 我不是说如何使用它们,而且它们是如何构build的, sorting枚举后面的代码是什么…?

由于Python是开源的,你可以阅读源代码 。

要找出某个特定模块或函数在哪个文件中实现,通常可以打印__file__属性。 或者,您可以使用inspect模块,请参阅inspect文档中的检索源代码部分。

对于内置的类和方法,这不是那么直接,因为inspect.getfileinspect.getsource将返回一个types错误,指出该对象是内置的。 但是,许多内置types可以在Python源主干的Objects子目录中find。 例如,请参阅此处查看枚举类的实现,或者查看 listtypes的实现。

这里有一个食谱答案补充@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()

请享用。

iPython shell使这个很简单: function? 会给你的文件。 function?? 也显示了代码。 但是这只适用于纯Python函数。

然后你可以随时下载 (c)Python的源代码。

如果您对pythonic核心function的实现感兴趣,请查看PyPy源代码。

你可以简单地使用help()命令获得关于内build函数及其代码的帮助。

例如:如果你想看到str()的代码,只需inputhelp(str)

它会像这样回来,

 >>> help(str) Help on class str in module __builtin__: class str(basestring) | str(object='') -> string | | Return a nice string representation of the object. | If the argument is a string, the return value is the same object. | | Method resolution order: | str | basestring | object | | Methods defined here: | | __add__(...) | x.__add__(y) <==> x+y | | __contains__(...) | x.__contains__(y) <==> y in x | | __eq__(...) | x.__eq__(y) <==> x==y | | __format__(...) | S.__format__(format_spec) -> string | | Return a formatted version of S as described by format_spec. | | __ge__(...) | x.__ge__(y) <==> x>=y | | __getattribute__(...) -- More -- 

在这里输入图像说明

我不得不挖掘一点,以find以下Built-in Functions的来源,因为search将产生成千上万的结果。 (祝你好运search任何这些来find它的来源是)

无论如何,所有这些函数都是在bltinmodule.c中定义的。函数以builtin_{functionname}

内置资源: https : //github.com/python/cpython/blob/master/Python/bltinmodule.c