我正在尝试查看pow()
函数的源代码,并希望了解Python34目录。我查看了Lib
目录中的各种库,例如fractions.py
和base64.py
,但我似乎无法找到内置函数的.py
文件存储。我应该在哪里看?
答案 0 :(得分:1)
标准库中的内置函数和函数并不总是在Python中实现。在CPython(参考Python实现)中,它们通常用C
编写您要查找的方法在以下文件中定义(取决于您感兴趣的类型):
Objects/floatobject.c:643
Objects/longobject.c:3809
您实际上可以在Objects
的CPython源代码树中查找/*nb_power*/
目录以查找更多内容。试试this search query on GitHub。
答案 1 :(得分:0)
repr
包含“内置”字样的函数实际上并未在Python代码中定义,在cPython中 - 它们是用C语言编写的,并且可以作为二进制模块使用。
例如,当你得到“pow”的代表时,你会得到:
>>> repr(pow)
'<built-in function pow>'
与Python定义的函数相反:
>>> import glob
>>> repr (glob.glob)
'<function glob at 0x7efefe69aa70>'
因此,如果您从Python.org下载(或使用mercurial获取它),您可以在Python本身的源代码中搜索标记为“内置”的函数的C源代码。
如果你想在satadard lib中使用任何函数的纯Python实现,那么它应该包含在pypy发行版中 - 只需从中获取:
https://bitbucket.org/pypy/pypy你应该看到cPython中所有函数的纯Python实现是出于性能或历史原因而在C中实现的。