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

jac*_*ill 0 python performance if-statement return python-2.7

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

更具体地说,这是一个理论功能:

def f(x, y):
    return x < y and f2(x, y) == 1
Run Code Online (Sandbox Code Playgroud)

如果f2需要一段时间才能执行,我应该f改为这个吗?

def f(x, y):
    if x >= y: return False
    return f2(x, y) == 1
Run Code Online (Sandbox Code Playgroud)

如果因为提前而x大于或等于Python,Python会自动返回False 吗? 哪两个更快,为什么?yand

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

Rus*_*ove 7

来自文档:"布尔运算符andor所谓的短路运算符:它们的参数从左到右进行评估,一旦确定结果,评估就会停止."