虽然我经常很好地利用它,但我逐渐意识到,在一个更大的项目中,以下可能是一个问题。
在许多编码语言中,包括python,
0**0
返回1,不抛出值错误。乍一看,这似乎并不那么重要,但一旦对数出现在画面中,它就成了一个问题。这是一个可以避免的问题,但仍然很烦人。
想想这个
from math import log
foo = 0 * log(0)
bar = log(0**0)
在数学上, foo
以及 bar
是等价的,而对于python bar
为0,而 foo
抛出 MathDomainError
同样,如果导入 log
从 numpy
, foo
将 nan
鉴于 bar
将为0。
当然,对于大多数应用程序来说,log0(0)只是零,但严格地说,在数学术语中,它是未定义的,应该由程序员专门处理。
我的问题是,有什么理由 0**0 = 1
或者这只是一个疏忽。
不管怎样,这其实并不重要,但有时会让人讨厌。
暂无答案!
目前还没有任何答案,快来回答吧!