這是一些行爲特殊的代碼。這是我寫的行爲的簡化版本。這仍然會顯示出奇怪的行爲,並且我爲此發生了一些具體問題。奇怪的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打印 –
哦,我想我覺得它在最初的嘗試返回導致它立即跳轉到外部 –
正是因爲'終於'塊**總是** 跑。 –