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