这是一些行为特殊的代码。这是我写的行为的简化版本。这仍然会显示出奇怪的行为,并且我为此发生了一些具体问题。奇怪的Try-Except-Else-最后的行为与Return语句
我使用Python 2.6.6在Windows 7
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
if __name__ == "__main__":
print "*** DEMO ONE ***"
print demo1()
print "****************"
print
print "*** DEMO TWO ***"
print demo2()
print "****************"
当您运行此脚本,它将打印:
*** DEMO ONE ***
3
****************
*** DEMO TWO ***
6
3
****************
为什么演示一个返回3而不是1? 为什么演示版本2打印6而不是打印6 w/4或5?
感谢您的帮助。
为什么在第二个例子中不打印5?我认为这仍然没有得到很好的解释。返回一个很好回答,但为什么没有在第二个例子中的5打印 –
哦,我想我觉得它在最初的尝试返回导致它立即跳转到外部 –
正是因为'终于'块**总是** 跑。 –