Python数学库是否独立于C数学库和平台?
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
,还是抛出ValueError
或OverflowError
,这并没有明确规定。而在某些情况下,math.log(0)
抛出OverflowError
,而math.log(0L)
可能会抛出ValueError
。如果至少有一个参数是
NaN
(表示不是一个数字),所有函数都会返回一个安静的NaN。发出信号的NaN
会抛出异常。异常的类型仍然取决于平台和libm
的实现。通常情况下,对于EDOM
会是ValueError
,而对于errno ERANGE
则是OverflowError
。在2.6版本中有所改变:在早期版本的Python中,输入为
NaN
的操作结果依赖于平台和libm
的实现。