为什么一些内置的Python函数只有传递?

时间:2016-07-14 21:03:08

标签: python pycharm standard-library c-standard-library

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

1 个答案:

答案 0 :(得分:28)

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

如果您想查看真实的源代码,可以在Modules/mathmodule.c的官方Github存储库中查看。其中很多函数都是围绕来自math.h的C函数的宏生成的薄包装器,但是还有一堆手动编写的代码来处理诸如标准库实现不一致或不充分之类的函数,没有math.h等效,以及__ceil__等自定义挂钩。