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

Python如何处理具有多个条件的布尔值?,python,performance,if-statement,python-2.7,return,Python,Performance,If Statement,Python 2.7,Return,如果我有一个基于两个或多个条件返回布尔值的函数,Python会检查每个条件吗 更具体地说,这是一个理论函数: def f(x, y): return x < y and f2(x, y) == 1 如果由于前面的和而x大于或等于y,Python会自动返回False吗? 两者中哪一个更快?为什么 我的问题同样适用于或语句,如果第一个条件为真,它是否继续评估下一个条件?来自:布尔运算符和和或是所谓的短路运算符:它们的参数从左到右求值,结果确定后求值立即停止。“最好添加文档的链接,而不

如果我有一个基于两个或多个条件返回布尔值的函数,Python会检查每个条件吗

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

def f(x, y):
    return x < y and f2(x, y) == 1
如果由于前面的
x
大于或等于
y
,Python会自动返回False吗?
两者中哪一个更快?为什么


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

来自:布尔运算符
是所谓的短路运算符:它们的参数从左到右求值,结果确定后求值立即停止。“

最好添加文档的链接,而不仅仅是引用文档。但除此之外,+1。这实际上不是关于
if
语句,而是关于
以及
表达式。(正如您显然已经猜到的,给出了您的
return
语句。)此外,还需要知道如何自己测试:编写
def f2(x,y):print('f2 ran')
,然后调用
f(0,1)
,看看它是否打印任何内容。(如果没有,您仍然需要检查文档,以确保语言能够保证这一点……但是如果有,您就知道Python不会短路。)
def f(x, y):
    if x >= y: return False
    return f2(x, y) == 1