区间比较中的未知变量不会引发 NameError

Unknown variable in interval comparison does not raises NameError

今天我遇到了一个非常奇怪的问题,这个简单的代码:

var1 = 1
var2 = 2

if var1 > var2 > var3:
    print('Does not run')

print('Did not crash')

输出:

Did not crash

为什么此代码不使用 Python 3.7 引发 NameError?将区间比较替换为简单比较会按预期引发 NameError。这是 python 错误吗?

var1 > var2 > var3 等于 (var1 > var2) and (var2 > var3)。第一个语句的计算结果为 False,因此 and 之后的第二个语句根本不会被计算,因为 Short-circuit evaluation.