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

时间:2013-01-23 01:05:46

标签: python performance if-statement python-2.7 return

如果我有一个基于两个或多个条件返回布尔值的函数,那么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因为提前and,Python会自动返回False吗?
哪两个更快,为什么?

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

1 个答案:

答案 0 :(得分:7)

来自the docs:“布尔运算符andor是所谓的短路运算符:它们的参数从左到右进行评估,并且评估会立即停止结果确定了。“