首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在哪里可以检查Python的数学函数?

在哪里可以检查Python的数学函数?
EN

Stack Overflow用户
提问于 2011-03-30 01:03:10
回答 4查看 15.6K关注 0票数 25

我想看看Python计算平方根的方式,所以我试图找到math.sqrt()的定义,但我在任何地方都找不到它。我已经在_math.cmathmodule.c和其他地方找过了。

我知道python使用C的数学函数,但是这些函数是在Python发行版中的某个地方,还是链接到其他地方的代码?我使用的是Mac。

math.sqrt()中的算法在哪里?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-30 01:20:23

这取决于实现方式。CPython使用标准C库中的数学函数。Jython很可能使用Java的数学方法。诸若此类。

事实上,Python与数学函数的实际实现无关。这些更多地与IEEE754有关,它现在几乎完全用于表示计算机中的浮点数。

无论如何,就CPython而言,它的math模块只是C函数(页面底部的prooflink)的薄薄包装器。C函数是作为标准C库的一部分实现的。它通常包含在OS发行版中,并且很可能是以二进制形式分发的,没有源代码。还要注意的是,许多微处理器对其中一些操作有专门的指令,您的编译器可能会很好地利用这些指令,而不是跳到C库中的实现。

我不能告诉你在你的系统上标准C库中使用的确切算法。here解释了一些可能的算法。

在OS的特定情况下,数学函数驻留在libSystem.dylib中,不幸的是它不是开源的(只有stub code available on Apple's Open Source site)。但是,如果您感兴趣,可以对其进行反汇编-在当前系统上,请尝试例如

代码语言:javascript
复制
otool -tvV /usr/lib/system/libsystem_m.dylib
票数 17
EN

Stack Overflow用户

发布于 2011-03-30 01:14:15

有些模块是用C编写的,而不是用python编写的,因此您无法找到.py文件。要查看这些列表,您可以使用:

import sys print sys.builtin_module_names

因为它是用C语言编写的,所以你必须在源代码中找到它。如果您已经有了源代码,那么它就在modules目录中。

票数 2
EN

Stack Overflow用户

发布于 2011-03-30 01:08:35

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5476189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档