Python 中的构造函数在 'try' 和 'if' 之间进行选择
测试变量是否有值时,在 'try' 之间进行选择或“如果”结构可能是一个有争议的问题。让我们深入探讨一下使用每种方法背后的基本原理。
EAFP(请求宽恕比请求许可更容易)与 LBYL(三思而后行)
Python 鼓励 EAFP超过 LBYL。 EAFP 涉及尝试操作并捕获发生的异常。另一方面,LBYL 涉及在尝试操作之前预先检查条件。
效率和可读性注意事项
效率方面取决于预期的异常频率。如果异常很少见,则 try/ except 块的开销可能会被 if 语句的速度所抵消。但是,如果异常更常见,则 try/ except 可能会更快,因为它避免了 if 语句中条件检查的开销。
示例
考虑以下代码检查函数是否返回列表:
result = function() if result: for r in result: # Process items
result = function() try: for r in result: # Process items except TypeError: pass
如果“结果”大多数时候可能是列表,则 try/ except 方法更有效。但是,如果 'result' 通常为 None,则最好使用 if 语句。
时间测量
时间测量表明,当异常确实异常时,try/ except 更快,而 if 语句在通常满足条件时速度更快。
结论
“try”和“if”之间的决定取决于:
一般来说,EAFP(try/ except)可以是更“pythonic”的“方法,特别是当例外情况很少见时。然而,当异常常见时,LBYL(if 语句)可能更合适。
以上是在 Python 中什么时候应该使用'try”以及什么时候应该使用'if”?的详细内容。更多信息请关注PHP中文网其他相关文章!