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

Ove*_*ivr 2 python python-3.7

我今天用这个简单的代码面临一个非常奇怪的问题:

var1 = 1
var2 = 2

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

print('Did not crash')
Run Code Online (Sandbox Code Playgroud)

输出:

Did not crash
Run Code Online (Sandbox Code Playgroud)

为什么这段代码没有在Python 3.7中引发NameError?用简单的比较代替间隔比较会引起NameError异常。这是python的错误吗?

san*_*ash 6

var1 > var2 > var3等于(var1 > var2) and (var2 > var3)。第一条语句的计算结果为False,因此,and由于短路评估,根本不评估后面的第二条语句。