区间比较中的未知变量不会引发 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.
今天我遇到了一个非常奇怪的问题,这个简单的代码:
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.