try-finally中的1个坑,try-finally,在编写高质量代码-改善p


在编写高质量代码-改善python程序的91个建议中有一个关于try-finally的一个问题如下:

def ReturnTest(a):    try:        if a <= 0:            raise ValueError('data can not be negative')        else:            return a    except ValueError as e:        print(e)    finally:        print('the end')        return -1ReturnTest(0)ReturnTest(2)

给入参数为0时,输出结果可以解释通,输入参数为2时,就想不通了,书中解释说是在执行return a之前会先执行finally代码块,这是为何?

编橙之家文章,

评论关闭