2010-08-02 31 views
9

tôi thấy mục thú vị này trong một blog hôm nay:Tại sao điều này làm những gì nó làm?

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

print "abc() is", abc() 

bất cứ ai có thể cho lý do tại sao nó làm những gì nó?

Cảm ơn, KR

+0

Mặc dù không hoàn toàn giống nhau, một cuộc thảo luận tốt về điều này có thể được tìm thấy tại đây: http://stackoverflow.com/questions/1611561/python-error-handling-with-try-finally – dave

+0

-1: did thậm chí không cố tìm kiếm câu lệnh cuối cùng trong http://docs.python.org/reference/compound_stmts.html#the-try-statement –

Trả lời

10

Nếu khối cuối cùng chứa một tuyên bố return hoặc break kết quả từ thử khối được loại bỏ

nó giải thích chi tiết trong python docu

+0

aww bạn đánh bại tôi :) –

0

Cảm ơn bạn đã trỏ đến tài liệu. Tôi không thể vượt qua 'sự trở lại đích thực' để thậm chí nghĩ đến việc tìm kiếm ở đó.

Một phần của tài liệu hướng dẫn đọc:

Nếu cuối cùng có mặt, nó xác định một handler ‘dọn dẹp’. Mệnh thử là thực hiện, ...

đó cho thấy sự trở lại thật được thực thi. Tuy nhiên, điều này được làm sáng tỏ sau:

Khi quay trở lại, phá vỡ hoặc tiếp tục statement được thực hiện trong bộ phần mềm thử của một thử ... cuối cùng tuyên bố, khoản cuối cùng cũng được thực hiện 'trên đường . '

Điều này giải thích hành vi được quan sát.

Loại tâm trí nào sẽ nghĩ ra một số mã như thế này ngay từ đầu? ;)

Các vấn đề liên quan