我对python中的实践并不太熟悉,我想知道在执行我需要的检查时是否使用(滥用)异常是一种好习惯,还是应该只用于检查非法参数(例如,他们是否有性能损失)。
示例(数字是一个友好数字,如果它有一对,其实际除数的总和是它的对,反之亦然。这段代码打印出数字):
amicable_numbers = []
for a, b in divisor_sums:
try:
pair = divisor_sums[b][1]
except IndexError:
pair = get_divisor_sum(prime_numbers, a)
if a == pair and b != a:
print a, pair
这是使用if-else检查的等效代码:
amicable_numbers = []
max_calculated = len(divisor_sums)
for a, b in divisor_sums:
if b < max_calculated:
pair = divisor_sums[b][1]
else:
pair = get_divisor_sum(prime_numbers, a)
if a == pair and b != a:
print a, pair
我尝试对运行进行基准测试,但没有注意到性能差异很大,if-else的速度更快(在这种情况下速度提高1-2%),但第一个代码更具可读性为了我。所以我的问题是:我是否必须避免滥用例外?是否适合使用它们?