寫代碼的時候發現了好玩的事情,常常作為終止的 return 語句並不總是能夠立刻跳出函數
def A():
try:
for i in range(10):
if i == 5:
return
print(i)
except:
pass
finally:
print("hahaha")
這段代碼得到的運行結果是
0
1
2
3
4
hahaha
對於另外一段代碼
def B():
try:
for i in range(10):
if i == 5:
return i
print(i)
except:
pass
finally:
i = 10
print("hahaha")
函數的返回值仍然是 5,並沒有改為 10
而當 try 或 except 和 finally 中同時出現 return 的時候,返回值是 finally 中的值
def C():
try:
return 5
except:
return 6
finally:
return 10
得到的結果為 10