繁体   English   中英

为什么有些内置的Python函数只有pass?

[英]Why do some built-in Python functions only have pass?

本来想看看一个math.py function是怎么实现的,结果打开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 知道应该有哪些函数,它可以使用函数文档字符串猜测它们的签名,但它不知道函数体应该是什么样子。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM