Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么一些内置Python函数只有pass?_Python_Pycharm_Standard Library_C Standard Library - Fatal编程技术网

为什么一些内置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会存在?