为什么一些内置Python函数只有pass?
我想看看为什么一些内置Python函数只有pass?,python,pycharm,standard-library,c-standard-library,Python,Pycharm,Standard Library,C Standard Library,我想看看math.py函数是如何实现的,但是当我在PyCharm中打开文件时,我发现所有函数都是空的,并且有一个简单的过程。例如: 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. """ p
math.py
函数是如何实现的,但是当我在PyCharm中打开文件时,我发现所有函数都是空的,并且有一个简单的过程
。例如:
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知道应该有哪些函数,并且可以使用函数docstrings猜测它们的签名,但是它不知道函数体应该是什么样子
如果您想查看真正的源代码,可以在中的官方Github存储库中查看。其中的许多函数都是围绕
math.h
中的C函数生成的宏精简包装,但也有一堆手动编写的代码来处理不一致或标准库实现不足等问题,没有math.h
等价物的函数,像PyCharm这样的定制钩子在骗你。您正在查看的源代码是PyCharm创建的伪代码。PyCharm知道应该有哪些函数,并且可以使用函数docstrings猜测它们的签名,但是它不知道函数体应该是什么样子
如果您想查看真正的源代码,可以在中的官方Github存储库中查看。其中的许多函数都是围绕
math.h
中的C函数生成的宏精简包装,但也有一堆手动编写的代码来处理不一致或标准库实现不足等问题,没有math.h
等价物的函数,还有像\uuu ceil\uuu
math.py
这样的定制挂钩?什么math.py
?我认为Python没有这样的文件。math
模块是在中实现的,该文件可能不会进入您的Python安装中。通过谷歌搜索“Python真实签名未知”表明这是某种PyCharm功能,PyCharm在欺骗您。确切地说,PyCharm告诉我存在math.py
。它是一个包含所有空数学函数的文件,就像我在问题中输入的ceil
一样。相关:math.py
?什么math.py
?我认为Python没有这样的文件。math
模块是在中实现的,该文件可能不会进入您的Python安装中。通过谷歌搜索“Python真实签名未知”表明这是某种PyCharm功能,PyCharm在欺骗您。确切地说,PyCharm告诉我存在math.py
。它是一个包含所有空数学函数的文件,就像我在问题中提到的ceil
一样。相关:你可以通过标题栏中的文件路径识别假源文件。Real:\Python\Python\Lib\
。假的:\PyCharm\system\python\u stubs\
既然我们可以通过执行它们来使用它们(比如ceil函数),为什么我们不能在本地环境中找到源代码呢?是因为它已经是二进制格式(如果是这种情况,在哪里可以找到这个二进制文件)?@LukAron:在Windows上,math
直接编译到Python可执行文件中。在其他平台上,您可以检查math.\uuuu文件\uuu
以查找.so
文件。@user2357112supportsMonica非常感谢您的回复,在windows中,是否有任何方法可以找到此可执行文件的位置?但为什么pycharm会存在?您可以通过标题栏中的文件路径识别假源文件。Real:\Python\Python\Lib\
。假的:\PyCharm\system\python\u stubs\
既然我们可以通过执行它们来使用它们(比如ceil函数),为什么我们不能在本地环境中找到源代码呢?是因为它已经是二进制格式(如果是这种情况,在哪里可以找到这个二进制文件)?@LukAron:在Windows上,math
直接编译到Python可执行文件中。在其他平台上,您可以检查math.\uuuu文件\uuu
以查找.so
文件。@user2357112supportsMonica非常感谢您的回复,在windows中,是否有任何方法可以找到此可执行文件的位置?但为什么pycharm会存在?