0
点赞
收藏
分享

微信扫一扫

Python try except else finally的执行过程

捌柒陆壹 2022-07-12 阅读 72
编程语言


如果​​try except else finally​​都有返回值,会返回谁的值呢?参见下面各种情况。

如果try有返回值呢?

def f():
try:
print(1)
return 1
except:
print(2)
return 2
else:
print(3)
return 3
finally:
print(4)
return 4

输出:

1
4
4

答案是​​finally​​​的返回值。
​​​finally​​把前面的return都覆盖了。

如果有异常发生返回呢?

def f():
try:
print(1/0)
return 1
except:
print(2)
return 2
else:
print(3)
return 3
finally:
print(4)
return 4

print(f())

结果:

2
4
4

如果有else返回呢?

def f():
try:
print(1)
# return 1
except:
print(2)
return 2
else:
print(3)
return 3
finally:
print(4)
return 4

print(f())

结果:

1
3
4
4

总结

​finally​​​会把前面的​​return​​​都覆盖了。
只有try正常执行,才会执行else,try有异常或return,都不会执行else。
建议把return放在函数最外面,或finally里,不然容易让finally里的return覆盖。

“如果try中没有异常,那么except部分将跳过,执行else中的语句。
finally是无论是否有异常,最后都要做的一些事情。”


举报

相关推荐

0 条评论