def test_fun():
try:
print('before return')
return 'result'
finally:
print('after return')
print(test_fun())
输出:
before return
after return
result
可以看到先执行return之前的语句,然后执行finally中的语句,最后再执行return。这就符合“return之后的语句都不会执行”的通常表述。
如果finally中出现return,会拦截try中的return:
def test_fun():
try:
print('before return')
return 'result'
finally:
print('after return')
return 'finally result'
print(test_fun())
输出:
before return
after return
finally result