Неизвестная переменная в интервале сравнения не вызывает NameError - PullRequest
2 голосов
/ 15 октября 2019

Сегодня я столкнулся с очень странной проблемой с этим простым кодом:

var1 = 1
var2 = 2

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

print('Did not crash')

Вывод:

Did not crash

Почему этот код не вызывает NameError с Python 3.7? Замена сравнения интервалов простым сравнением вызывает NameError, как и ожидалось. Это ошибка с питоном?

1 Ответ

6 голосов
/ 15 октября 2019

var1 > var2 > var3 равно (var1 > var2) and (var2 > var3). Первое утверждение оценивается как False, поэтому второе утверждение после and вообще не оценивается из-за оценки короткого замыкания .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...