在python中有避免ZeroDivisionError
的最佳实践吗?例如,考虑以下函数:
def division (x,y):
return x / y
在这个函数中,如果y被设置为0,则ZeroDivisionError
被提升。一种策略是用y+1
替换除法的分母,因此函数是:
def division (x,y):
return x / (y+1)
或者,如果分母为零,则另一种策略可以返回nan值:
def division (x,y):
if y == 0:
return np.nan
else:
return x / y
以上策略的缺点是什么?有没有其他方法可以避免ZeroDivisionError
?对于这个问题,异常处理也是一种流行的解决方案,但我更多的是寻找预防策略,而不是干预。你知道吗
请记住,
numpy.true_divide()
永远不会返回ZeroDivisionError
。返回inf。你知道吗即
add-one策略的缺点是,如果
y
是一个小数字(不是-1),那么结果将非常不正确。只有当y
非常大时才起作用。你知道吗返回NaN的缺点是您需要为调用您函数的人清楚地记录这一点。
np.nan
会让打电话的人大吃一惊。例如,当您进行类似division(1, 0) == division(2,0)
的比较时,期望得到什么提出错误是正确的做法,让调用者按照他们的规则处理。你知道吗
这遵循相同的调节策略,但您可以使用以下方法:
相关问题 更多 >
编程相关推荐