質問: 今までC++やC#を触っていたのですが、たまにpythonも触っていました。 先日pythonのイテレータを見ていたら、イテレータの終了が`raise StopIteration()`で規定されていて、違和感を感じました。 C#等では「例外のcatchはかなり遅い」というのが常識だと思っていました。 少なくとも、こういう場面で安易に用いるようなものではないと思います。 もしかして、pythonでは例外処理はそこまで遅くないのでしょうか?高頻度で`raise`しても大丈夫でしょうか?
回答: 同じ質問が英語の方でありました。 要は `StopIteration` に関してはコストが大きくならないように対処されていて、そのへんはPEP0234で言及されているとのことです。 Pythonでもほかの例外の捕捉のコストは基本大きいですよ。ドキュメントに書いてあるとおり、 > > 実際に例外を捕捉するのは**高価**です。 > > > (※ただし `StopIteration` は除く) です。