Глава 5 · Давайте поиграем с числами!

Унарные операторы

Один операнд, а не два — и одна очень известная ловушка приоритета операций.

-5 — это не «минус пять как отдельное число», а применение унарного оператора - к числу 5. Унарный — значит «с одним операндом», в отличие от привычного бинарного вычитания (8 - 3).

unarnyj.py
x = 5
print(-x)     # -5 — унарный минус меняет знак
print(+x)     # 5 — унарный плюс почти ничего не делает (редко используется)
print(8 - 3)  # 5 — а это бинарное вычитание, два операнда

Классическая ловушка: -2 ** 2

Многие ожидают -4, но подозревают 4 (как будто сначала считается (-2) ** 2). Проверим:

lovushka.py
print(-2 ** 2)     # -4
print((-2) ** 2)   # 4 — другое число!
()
скобки — всегда первыми
**
возведение в степень
+x -x
унарный плюс/минус
* / // %
умножение, деление, целочисленное деление, остаток
+ -
сложение, вычитание
** стоит ВЫШЕ унарного минуса — поэтому -2 ** 2 сначала возводит 2 в квадрат
-2 ** 2
-(2 ** 2)
-(4)
-4
** выполняется раньше унарного минуса — сначала 2 ** 2 = 4, потом применяется минус
** — единственное исключение такого рода
У всех остальных операторов приоритет ведёт себя ожидаемо. Именно из-за этой особенности ** опытные разработчики почти всегда пишут (-2) ** 2 явно, скобками — даже когда приоритет формально понятен.
Практика: унарные операторы
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →