【发布时间】:2019-01-11 08:22:08
【问题描述】:
有人可以解释一下为什么会这样吗? Python 3.6.3
In [1]: def test():
...: try:
...: return 1
...: finally:
...: return 2
...:
In [2]: test()
Out[2]: 2
编辑:
这并不完全重复,因为链接的问题在他们的try : 中引发了异常,而我的示例使用了我希望工作的return。这个函数看起来应该返回 1 但它返回 2 - 所以基本上 return 1 被忽略了。 finally 可以很好地吃掉任何上升的异常,但它也应该吃掉回报吗?
【问题讨论】:
-
由于
finally将毫无例外地执行,我认为在这种情况下try中的语句被执行但值不会返回。 -
这个重复的答案对
return和例外都有效。 stackoverflow.com/a/11164157/1977847
标签: python