Глава 4 · Python любит числа
Порядок выполнения операций
2 + 3 * 4 — это 14 или 20? Разберём, в каком порядке Python на самом деле вычисляет выражения.
Как и в математике, в Python операции выполняются не строго слева направо — у каждого оператора есть свой приоритет.
primer.py
print(2 + 3 * 4) # 14, а не 20
print((2 + 3) * 4) # 20 — скобки меняют порядок
()
скобки — всегда выполняются первыми
**
возведение в степень
+x -x
унарный плюс/минус
* / // %
умножение, деление, целочисленное деление, остаток
+ -
сложение, вычитание
Это не полная таблица
Официальная таблица приоритетов Python включает намного больше операторов — сравнения, логические, битовые и другие, до которых мы ещё не дошли. Здесь — только то, что относится к арифметике этой главы. Полную таблицу можно найти в разделе «Operator precedence» на docs.python.org, когда она вам понадобится целиком.
Правило хорошего тона
Даже когда вы точно помните приоритет операторов, скобки почти ничего не стоят, а читаемость улучшают ощутимо. Если есть сомнение, как прочитает выражение другой человек (или вы сами через полгода) — добавьте скобки.
Практика: почините порядок операций
Интерактивный ноутбук прямо в браузере — предскажите результат, затем расставьте скобки