這不是Python獨有的。其他答案是好的,但只是沒有很好地成爲評論一些額外的想法:
- 你使用異常,當你不希望(或需要)來檢查結果。在這種模式下,您只需執行該操作,並且如果某處出現錯誤,則會拋出異常。擺脫顯式檢查可以縮短代碼時間,並且在發生異常時仍然可以獲得良好的調試信息,因此很常見。這是EAFP(比請求更容易要求寬恕)的風格。
- 當您想要檢查結果時使用返回碼。如果故障不會總是乾淨地失敗,或者有助於在複雜的代碼流中進行調試,則有時需要顯式檢查。這有時被稱爲LBYL(看你跳躍之前)的風格。
在Python中,最喜歡的解釋性語言,因爲開銷是如此之高,例外情況是相對便宜,所以它更常見於Python中使用EAFP比,也就是說,C++,其中開銷較低,例外的是(相對)更貴。
請注意,函數可能會給出返回值和可能會引發異常。
在您的示例中,像doesPointExist
這樣的函數意味着用戶實際上想在嘗試某些操作之前驗證訪問權限。這是LBYL。作爲結果值拋出一個異常是EAFP編程風格的一部分,並且對於這個函數沒有任何意義 - 如果你想要這種風格,你不會檢查,你只會這樣做,並在點不存在。
然而,即使在這裏有假設 - 你已經給出了一個有效的觀點。如果該函數返回True/False是否存在該點,那麼將會很好,如果某個不是點的東西被傳遞給它,則會拋出異常。
使用異常而不是檢查返回碼通常更加pythonic。 [EAFP](http://docs.python.org/2/glossary.html#term-eafp) – Tim