为什么在包含return语句的try-block之后执行finally-block

时间:2014-08-05 14:16:36

标签: python python-2.7 try-catch try-catch-finally

我想知道函数 foo 为什么返回3而不是1.请解释。

def foo():
    try:
        return 1
    except:
        return 2
    finally:
        return 3

2 个答案:

答案 0 :(得分:1)

无论异常如何,finally块都会执行。看一下这个question

详细说明,finally子句总是在try语句结束之前执行。这是documentation

答案 1 :(得分:0)

最后总是执行try块后发生的最后一项。

是的,执行finally块但是流离开try块 - 无论是到达结尾,返回还是抛出异常。