这是一些行为特殊的代码。这是我写的行为的一个简化版本。这仍然会显示出奇怪的行为,我有一些具体的问题,为什么会发生这种情况。
我在Windows7上使用Python2.6.6。
def demo1():
try:
raise RuntimeError,"To Force Issue"
except:
return 1
else:
return 2
finally:
return 3
def demo2():
try:
try:
raise RuntimeError,"To Force Issue"
except:
return 1
else:
return 2
finally:
return 3
except:
print 4
else:
print 5
finally:
print 6
结果:
>>> print demo1()
3
>>> print demo2()
6
3
执行顺序为:
因此,finally块中的任何返回都将提前结束步骤。
因为
finally
语句被保证执行(假设没有断电或Python控制之外的任何事情)。这意味着在函数返回之前,它必须运行finally块,该块返回不同的值。Python docs状态:
这意味着当您试图返回时,将调用
finally
块,返回它的值,而不是您本来应该拥有的值。相关问题 更多 >
编程相关推荐