Python 中 and 与多个 if 的效率

22 投票
5 回答
11148 浏览
提问于 2025-04-16 03:05

在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

这两种方法在性能上差别不大,所以这不会影响你的选择。在我看来,选择应该主要考虑代码的可读性。第一种方法通常更标准一些,但在某些情况下,第二种方法可能更清晰。你应该选择最能表达你意图的方法。

撰写回答