我最近在自学Python,发现了关于代码执行前的错误检查的LBYL/EAFP习惯用法。在Python中,被接受的样式似乎是EAFP,而且它似乎与该语言配合得很好。
LBYL (L__ook B__efore Y__ou L__eap):
def safe_divide_1(x, y):
if y == 0:
print "Divide-by-0 attempt detected"
return None
else:
return x/y
EAFP (it's E__asier to A__sk P__ermission):than EAFP)(it‘sE__asier toA__skP__ermission):
def safe_divide_2(x, y):
try:
return x/y
except ZeroDivisionError:
print "Divide-by-0 attempt detected"
return None
我的问题是:我从来没有听说过使用EAFP作为主要的数据验证构造,来自Java和C++背景。在Java中使用EAFP是明智的吗?或者异常带来的开销太大了?我知道只有在真正抛出异常时才会产生开销,所以我不确定为什么不使用更简单的EAFP方法。这仅仅是偏好吗?
https://stackoverflow.com/questions/404795
复制相似问题