def Test():
try:
return 0
finally:
return 1
x = Test()
print(x)
为什么上面代码1的输出? https://code.hackerearth.com/5cc081y 虽然逻辑上控件将函数保留在return语句中。
答案 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.