Python中的对数为零

San*_*Gil 1 python logarithm valueerror

我试图在Python中做零对数.

from math import log
log(0)
Run Code Online (Sandbox Code Playgroud)

这引起了我的例外.

ValueError: math domain error
Run Code Online (Sandbox Code Playgroud)

我理解log一个负数在数学上是未定义的,这就是Python log可以引发这个ValueError异常的原因.但是为什么在用零值调用它时也会引发异常呢?它应该返回一个-inf值,我已经看到无限数字可以在Python中表示(如此处所示).

我可以在没有亲自对待的情况下处理这个问题吗?我的意思是在做这样的事情时亲自.

from math import log, inf
foo = ... # Random value.
if foo != 0: return log(foo)
else: return -inf
Run Code Online (Sandbox Code Playgroud)

The*_*ist 7

实际上Python并没有错.零的对数也是未定义的,这是因为它是一个限制,它-inf只是从右边而不是从左边:

在此输入图像描述

所以,不,你必须自己处理.这是错的,但你可以这样做.像这样的东西:log(x) if x != 0 else -inf.