为什么在Python中“尝试/最终”与“返回”会发生奇怪的交互?

时间:2018-08-03 12:28:32

标签: python

有人可以向我解释为什么它会像这样吗? 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很好地解决了所有出现的异常情况,但是否也应该得到回报?

1 个答案:

答案 0 :(得分:4)

因为finally是一个清理动作,如果尝试添加,总是会被执行,否则else;)

您可以在此处阅读有关错误处理的Python 3文档页面:https://docs.python.org/3/tutorial/errors.html

部分:8.6。定义清理措施