写代码的时候发现了好玩的事情,常常作为终止的 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
python 中 try,except,finally 的执行顺序
原文:https://www.cnblogs.com/-qiufeng/p/11998910.html