为什么有些内置的Python函数只有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 函数的宏生成的薄包装器,但也有一堆手动编写的代码来处理诸如不一致或不足的标准库实现、没有math.h等效函数以及像 __ceil__ 这样的自定义钩子

某些 python 库没有用 python 编写的源代码。这些库是用C或其他语言编写的。它们不是由.py文件呈现的,PyCharm 或任何其他 IDE 无法在可读视图中打开它们的源代码。

您可以在...AppDataLocalProgramsPythonPython310Libsite-packages中检查来源。最有可能your-package文件夹中会有.pui,.pud,.dll和其他类似文件

相关内容

  • 没有找到相关文章

最新更新