例外を投げうる関数の呼び出しに特にオーバーヘッドはない
そうそう、以前Twitterで「Pythonの例外を投げる関数と投げない関数では呼び出しコストに差があるのか」的な話があったときに書いたコード、このまま埋もれても無駄だし貼付けておこう。
import timeit print timeit.Timer("foo(1)", setup=""" def foo(x): if x: return None else: return x """).repeat() print timeit.Timer("bar(1)", setup=""" def bar(x): if x: return None else: raise NotImplemented """).repeat()
[0.24111700057983398, 0.22863888740539551, 0.22955012321472168] [0.23151803016662598, 0.23359298706054688, 0.2297508716583252]