我最近正在自学Python,并发现了有关代码执行之前的错误检查的LBYL / EAFP习惯用法。在Python中,似乎可接受的样式是EAFP,并且似乎与该语言配合良好。
LBYL(大号 OOK 乙安伏ý OU 大号 EAP):
def safe_divide_1(x, y):
if y == 0:
print "Divide-by-0 attempt detected"
return None
else:
return x/y
EAFP(它的ê asier到一个 SK ˚F orgiveness比P ermission):
def safe_divide_2(x, y):
try:
return x/y
except ZeroDivisionError:
print "Divide-by-0 attempt detected"
return None
我的问题是:我什至从未听说过使用EAFP作为主要的数据验证结构,它来自Java和C ++背景。EAFP是在Java中明智使用的东西吗?还是异常产生了太多开销?我知道只有在实际引发异常时才有开销,因此我不确定为什么不使用更简单的EAFP方法。只是偏爱吗?
大话西游666
慕尼黑5688855