Глава 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, когда она вам понадобится целиком.
Правило хорошего тона
Даже когда вы точно помните приоритет операторов, скобки почти ничего не стоят, а читаемость улучшают ощутимо. Если есть сомнение, как прочитает выражение другой человек (или вы сами через полгода) — добавьте скобки.
Практика: почините порядок операций
Интерактивный ноутбук прямо в браузере — предскажите результат, затем расставьте скобки
Открыть практику →