2010-08-02 200 views
9

我在博客今天發現了這個有趣的項目:這是爲什麼這樣做呢?

def abc(): 
    try: 
     return True 
    finally: 
     return False 

print "abc() is", abc() 

誰能告訴它爲什麼它做什麼?

感謝, KR

+0

儘管不完全一樣,但可以在這裏找到 的一個很好的討論:http://stackoverflow.com/questions/1611561/python-error-handling-with-try-finally – dave 2010-08-02 17:47:28

+0

-1:did甚至沒有嘗試查看http://docs.python.org/reference/compound_stmts.html#the-try-statement – 2010-08-02 18:51:10

回答

10

如果finally塊包含returnbreak語句從結果嘗試 塊被丟棄

它的詳細解釋在python docu

+0

aww中的finally語句,你擊敗了我:) – 2010-08-02 17:50:43

0

感謝您指向文檔的指針。我無法超越'迴歸真實'甚至想到那裏。的文檔的

部分讀取:

如果最後存在時,它指定一個 「清理」處理程序。 try子句被執行, ...

這表明返回True執行。然而,這是後來澄清:

當一回,打破或繼續 語句在try套房一試... finally語句的執行 的 終於子句也 的方式執行」 out'。

這解釋了觀察到的行爲。

什麼樣的想法會首先想到這樣的代碼? ;)