无法理解 Python 如何解释这个"or"运算符



Python 解释以下语法的方式对我来说毫无意义(因此我浪费了两个小时调试代码!

假设您有以下代码:

def returns_true():
    print('i've been called!')
    return True
for val in [True, False]:
    print('val =', val)
    print(val or returns_true())

生成以下输出

val = True
True
val = False
i've been called!
True

有人可以解释为什么returns_true()只有在val False时才被召唤吗?Python 不应该调用该函数以使用 or 运算符评估它的返回值吗?

这是

由于"短路"评估。因为True or anything必须返回True,解释器在评估其余部分之前立即返回True,这不能改变结果。

andor是 Python 中的短路运算符,如文档中所示。如果左侧 (LHS( 为真实,则or运算符将立即返回,因为右侧 (RHS( 不会影响结果 (True or False == True or True == True (。如果 LHS Falseand算子将立即返回,因为结果必然是False

有关维基百科短路评估的更多信息 短路评估

相关内容

  • 没有找到相关文章

最新更新