我有以下示例函数:
def test():
try:
try:
x =1
except:
x = 2
finally:
print('X')
x = 7
return x
except Exception:
x=2
finally:
x = 9
return x
print(test())
基于此,我希望test()总是返回7(第一次返回),但是即使到达x = 7行(打印'X'),它也返回9。怎么会这样?
答案 0 :(得分:3)
来自docs:
如果存在finally子句,则finally子句将作为 try语句完成之前的最后一项任务。 finally子句运行 try语句是否产生异常。
(...)
- 如果finally子句包含return语句,则返回的值将是finally子句的return语句中的值,而不是
try子句的return语句中的值。
您可能认为您有2个finally
子句,但是第一个try
子句中包含第一个子句,因此您的函数返回9