58

我想看看一个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 标准库。它是如何工作的?

4

2 回答 2

76

PyCharm 在骗你。您正在查看的源代码是 PyCharm 创建的假代码。PyCharm 知道应该有哪些函数,它可以使用函数文档字符串猜测它们的签名,但它不知道函数体应该是什么样子。

如果你想看到真正的源代码,你可以在官方 Github 仓库中查看Modules/mathmodule.c。里面的很多函数都是围绕 C 函数的宏生成的瘦包装器math.h,但也有一堆手动编写的代码来处理诸如不一致或不充分的标准库实现、没有math.h等效的函数以及自定义钩子(如__ceil__.

于 2016-07-14T21:16:11.107 回答
0

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

您可以在...\AppData\Local\Programs\Python\Python310\Lib\site-packages. 文件夹中很可能your-package会有.pui、.pud、.dll和其他类似文件

于 2022-02-23T17:54:04.433 回答