【发布时间】:2011-12-27 19:20:52
【问题描述】:
我只是在查看 Python 常见问题解答,因为在另一个问题中提到了它。之前从未真正详细看过它,我遇到了this question:“异常有多快?”:
try/except 块非常有效。实际上捕获异常是昂贵的。在 2.0 之前的 Python 版本中,通常使用这个习语:
try: value = mydict[key] except KeyError: mydict[key] = getvalue(key) value = mydict[key]
我对 “捕获异常很昂贵” 部分感到有点惊讶。这仅指那些except 将异常保存在变量中的情况,还是一般所有excepts(包括上面示例中的那个)?
我一直认为使用如图所示的这样的习语会非常pythonic,尤其是在Python中“请求宽恕比获得许可更容易”。关于 SO 的许多答案也通常遵循这个想法。
捕捉异常的性能真的那么差吗?在这种情况下,是否应该遵循 LBYL(“跳前看”)?
(请注意,我并没有直接讨论常见问题解答中的示例;还有许多其他示例,您只需查找异常而不是检查之前的类型。)
【问题讨论】:
标签: python performance exception try-catch