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

问题描述 投票:2回答:1

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

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错误吗?

python python-3.7
1个回答
6
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.