2013-07-31 24 views
0

Python生成器函數過早結束時應該引發什麼異常?Python生成器函數過早結束異常

上下文:搜索表示爲__iter__的類所表示的樹,允許代碼如for i in BreadthFirstSearch(mytree)

這些搜索有一個max_depth值,之後它應該停止返回值。

發生這種情況時應該發生什麼異常,或者應該以其他方式進行?

+0

這聽起來像是一種情況,只是回溯並繼續遍歷,而不是引發異常甚至通知用戶。 – user2357112

+0

至於「噢不,出了什麼問題」這個更一般的情況,請舉出你在正常函數調用中提出的任何事情。 – user2357112

回答

3

StopIteration是引發完全停止迭代的適當例外。但是,max_depth不應該停止遍歷,遍歷應該簡單地不遞歸地下降到子節點時它已經在max_depth深度。

+0

那麼當函數產生所有節點達到max_depth深度時,函數應該做什麼? – rlms

+0

而不是下降到子節點,只需繼續到下一個兄弟姐妹。在下降到子節點之後,你會做同樣的事情,所以在遞歸調用前它是一個簡單的'if'。 – kindall

+0

對不起,我的意思是當所有*節點都被訪問過。深度優先搜索可能是一個不好的例子。 – rlms