Приоритет операторов в Python
Python вычисляет выражения в определённом порядке — как в математике. Знание этого порядка спасает от неожиданных результатов.
Как в математике
Сначала умножение и деление, потом сложение и вычитание. 2 + 3 * 4 даёт 14, а не 20, потому что 3*4 считается первым. Это привычные правила арифметики, и Python их соблюдает.
print(2 + 3 * 4) # 14
print((2 + 3) * 4) # 20
Сравнение и логика
Сначала считаются арифметика и сравнения (>, ==), затем логические not, потом and, и в конце or. Поэтому x > 0 and y > 0 работает как ожидается: сравнения раньше, and позже.
Скобки решают всё
Не нужно держать всю таблицу приоритетов в голове — просто ставьте скобки там, где хотите явно задать порядок. Скобки делают код и правильным, и понятным: читателю сразу видно замысел.
Частые вопросы
Что вычисляется раньше — and или or? and раньше or; при сомнении используйте скобки.
Обязательно ли учить всю таблицу? Нет, достаточно помнить про арифметику и на всякий случай ставить скобки.
Начать игру бесплатно