Python异常作为流控制

时间:2016-06-03 21:39:25

标签: python exception flow-control

我对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%),但第一个代码更具可读性为了我。所以我的问题是:我是否必须避免滥用例外?是否适合使用它们?

0 个答案:

没有答案