Python如何处理具有多个条件的布尔值?

0 投票
1 回答
5494 浏览
提问于 2025-04-17 13:23

如果我有一个函数,它根据两个或更多的条件返回一个布尔值(真或假),那么Python会检查每一个条件吗?

更具体地说,这是一个理论上的函数:

def f(x, y):
    return x < y and f2(x, y) == 1

如果 f2 执行起来比较慢,我应该把 f 改成这样吗?

def f(x, y):
    if x >= y: return False
    return f2(x, y) == 1

如果 x 大于或等于 y,Python会因为前面的 and 而自动返回假吗?
这两种方式哪个更快,为什么?

我的问题同样适用于 or 语句,如果第一个条件为真,它会继续评估下一个条件吗?

1 个回答

8

来自文档的内容:“布尔运算符 andor 被称为短路运算符:它们的参数是从左到右进行评估的,一旦结果确定,就会停止评估。”

撰写回答