寻找内置Python函数的源代码?
可能重复:
关于在sort()方法中构build的python
有没有办法看到如何build立在Python的function工作? 我不是说如何使用它们,而且它们是如何构build的, sorting或枚举后面的代码是什么…?
由于Python是开源的,你可以阅读源代码 。
要找出某个特定模块或函数在哪个文件中实现,通常可以打印__file__
属性。 或者,您可以使用inspect
模块,请参阅inspect
文档中的检索源代码部分。
对于内置的类和方法,这不是那么直接,因为inspect.getfile
和inspect.getsource
将返回一个types错误,指出该对象是内置的。 但是,许多内置types可以在Python源主干的Objects
子目录中find。 例如,请参阅此处查看枚举类的实现,或者查看 list
types的实现。
这里有一个食谱答案补充@Chris的答案,CPython已经转移到GitHub和Mercurial回购将不再更新:
- 如有必要安装Git。
-
git clone https://github.com/python/cpython.git
-
代码将签出到一个名为
cpython
– >cd cpython
的子目录 - 假设我们正在寻找
print()
的定义… -
egrep --color=always -R 'print' | less -R
- 啊哈! 请参阅
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