Python中零的对数

Python中零的对数,python,logarithm,valueerror,Python,Logarithm,Valueerror,我试图在Python中实现零的对数 from math import log log(0) 这给我带来了一个例外 ValueError: math domain error 我知道负数的log在数学上是未定义的,这就是为什么Python的log会引发这个ValueError异常。但是为什么在用零值调用它时也会引发异常呢?它应该返回一个-inf值,我已经看到Python()可以表示无限多的数字 我能在不亲自处理的情况下处理这个问题吗?我是说当我做这样的事情的时候 from math impor

我试图在Python中实现零的对数

from math import log
log(0)
这给我带来了一个例外

ValueError: math domain error
我知道负数的
log
在数学上是未定义的,这就是为什么Python的
log
会引发这个
ValueError
异常。但是为什么在用零值调用它时也会引发异常呢?它应该返回一个
-inf
值,我已经看到Python()可以表示无限多的数字

我能在不亲自处理的情况下处理这个问题吗?我是说当我做这样的事情的时候

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

实际上Python并没有错。零的对数也是未定义的,这是因为它是一个极限,并且它仅从右侧开始,而不是从左侧开始:


所以,不,你必须自己处理。那是错误的,但你可以做到。类似这样的内容:
log(x)if x!=0 else-inf

log(foo)如果foo>0 else-inf
看起来不错,它应该返回一个
-inf
值不应该返回
log(0)
不等于-inf。它的极限“接近零”趋向于-无穷大,但值本身是未定义的。@not________________________________________________________=我认为,0 else-inf,捕捉到了可以容纳
-inf
值的正确想法。它仍然(正确地)引发负
x
的异常。