为什么有些内置的Python函数只有pass?
Why do some built-in Python functions only have pass?
我想看看一个math.py
函数是如何实现的,但是当我打开PyCharm中的文件时,我发现所有的函数都是空的,只有一个简单的pass
.例如:
def ceil(x): # real signature unknown; restored from __doc__
"""
ceil(x)
Return the ceiling of x as a float.
This is the smallest integral value >= x.
"""
pass
我猜是因为使用的函数实际上来自C标准库。它是如何工作的?
PyCharm 在骗你。您正在查看的源代码是 PyCharm 伪造的。 PyCharm 知道那里应该有什么函数,它可以使用函数文档字符串猜测它们的签名,但它不知道函数体应该是什么样子。
如果您想查看真正的源代码,可以在Modules/mathmodule.c
中的官方Github 存储库中查看它。里面的很多函数都是宏生成的围绕 math.h
的 C 函数的精简包装器,但也有一堆手动编写的代码来处理诸如标准库实现不一致或不充分、没有 [=11 的函数等问题=] 等效项,以及自定义挂钩,如 __ceil__
.
某些 python 库没有用 python 编写的源代码。
这些库是用 C 或其他语言编写的。它们不由 .py 文件呈现,并且 PyCharm 或任何其他 IDE 无法以可读视图打开它们的源代码。
您可以在 ...\AppData\Local\Programs\Python\Python310\Lib\site-packages
中查看来源。 your-package
文件夹中很可能会有 .pui、.pud、.dll 和其他类似文件
我想看看一个math.py
函数是如何实现的,但是当我打开PyCharm中的文件时,我发现所有的函数都是空的,只有一个简单的pass
.例如:
def ceil(x): # real signature unknown; restored from __doc__
"""
ceil(x)
Return the ceiling of x as a float.
This is the smallest integral value >= x.
"""
pass
我猜是因为使用的函数实际上来自C标准库。它是如何工作的?
PyCharm 在骗你。您正在查看的源代码是 PyCharm 伪造的。 PyCharm 知道那里应该有什么函数,它可以使用函数文档字符串猜测它们的签名,但它不知道函数体应该是什么样子。
如果您想查看真正的源代码,可以在Modules/mathmodule.c
中的官方Github 存储库中查看它。里面的很多函数都是宏生成的围绕 math.h
的 C 函数的精简包装器,但也有一堆手动编写的代码来处理诸如标准库实现不一致或不充分、没有 [=11 的函数等问题=] 等效项,以及自定义挂钩,如 __ceil__
.
某些 python 库没有用 python 编写的源代码。 这些库是用 C 或其他语言编写的。它们不由 .py 文件呈现,并且 PyCharm 或任何其他 IDE 无法以可读视图打开它们的源代码。
您可以在 ...\AppData\Local\Programs\Python\Python310\Lib\site-packages
中查看来源。 your-package
文件夹中很可能会有 .pui、.pud、.dll 和其他类似文件