无法理解 Python 如何解释此 'or' 运算符

Can't understand how Python interprets this 'or' operator

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() 仅在 valFalse 时才被调用吗? Python 不应该调用该函数以使用 or 运算符计算它的 return 值吗?

这是由于 "short-circuit" 评估。因为 True or anything 必须 return True,解释器立即 returns True 在评估其余部分之前,这不能改变结果。

andor是Python中的短路运算符,在docs中可以看出。如果左侧 (LHS) 为真,or 运算符将立即 return,因为右侧 (RHS) 不会影响结果 (True or False == True or True == True)。如果 LHS 是 Falseand 运算符将立即 return,因为结果必然是 False

有关 Wikipedia Short-circuit evaluation

短路评估的更多信息