为什么在return语句后执行finally?

时间:2016-01-08 21:11:56

标签: function python-2.7 return try-finally

def Test():
    try:
        return 0
    finally:
        return 1
x  = Test()
print(x)

为什么上面代码1的输出? https://code.hackerearth.com/5cc081y 虽然逻辑上控件将函数保留在return语句中。

2 个答案:

答案 0 :(得分:2)

https://docs.python.org/2/tutorial/errors.html

  

“终止子句总是在离开尝试之前执行   声明,是否发生了异常。当一个例外   已经发生在try子句中并且没有被except处理   子句(或者它发生在except或else子句中),它是   在finally子句执行后重新引发。最后   当任何其他条款出现时,子句也会在“出路”上执行   try语句通过break,continue或return语句保留。

答案 1 :(得分:1)

在离开finally块之前,try部分始终执行 return 0将离开try块。因此,首先执行finally部分并返回1.

Documentation