Python 中 and 与多个 if 的效率
在if语句中使用“与”(and)和使用多个if语句之间,效率上有没有区别?换句话说,像这样:
if expr1 == expr2 and expr3==expr4:
dostuff()
在效率上和下面的这种写法有区别吗:
if expr1 == expr2:
if expr3 == expr4:
dostuff()
我做了一些非常基础的测试,没有发现有什么不同,但有没有人更了解这个问题(或者至少测试得更全面)能给个明确的答案呢?
5 个回答
7
无论哪种情况,如果 expr1 == expr2
的结果是 false
,那么在 if
语句中,第二个条件就不会被检查。
18
使用 and
和嵌套的 if 语句在速度上几乎没有什么区别。你可能在考虑错误的方向。想象一下这棵树:
if oftenTrueCondition and rarelyTrueCondition:
和
if rarelyTrueCondition and oftenTrueCondition:
所以,除非第一个条件必须先被判断(比如它是一个保护措施,用来防止后面的表达式出错或者做一些不必要的、耗费资源的事情),否则可以考虑调整判断的顺序。
14
这两种方法在性能上差别不大,所以这不会影响你的选择。在我看来,选择应该主要考虑代码的可读性。第一种方法通常更标准一些,但在某些情况下,第二种方法可能更清晰。你应该选择最能表达你意图的方法。