Python数学库是否独立于C数学库和平台?

3 投票
2 回答
1065 浏览
提问于 2025-04-15 13:03

Python自带的数学库基本上是用C语言的数学库吗?还是说Python有一个和C无关的数学库?另外,Python的数学库是否可以在不同的平台上使用?

2 个回答

2

Python会使用它所连接的C语言库。在Windows系统上,并没有一个统一的“平台C库”。实际上,在任何版本的Windows上,都有多个版本的微软C运行时库(MSCRT)。

5

页面底部有这么一段话:

注意:这个math模块主要是对平台的C语言math库函数的简单封装。对于一些特殊情况的表现,C语言标准中并没有明确规定,而Python在这方面也继承了平台C实现的错误报告方式。因此,在错误发生时具体抛出什么异常(甚至某些参数是否被认为是特殊情况)并没有一个统一的跨平台或跨版本的定义。例如,math.log(0)是返回-Inf,还是抛出ValueErrorOverflowError,这并没有明确规定。而在某些情况下,math.log(0)抛出OverflowError,而math.log(0L)可能会抛出ValueError

如果至少有一个参数是NaN(表示不是一个数字),所有函数都会返回一个安静的NaN。发出信号的NaN会抛出异常。异常的类型仍然取决于平台和libm的实现。通常情况下,对于EDOM会是ValueError,而对于errno ERANGE则是OverflowError

在2.6版本中有所改变:在早期版本的Python中,输入为NaN的操作结果依赖于平台和libm的实现。

撰写回答