12 Приоритет операторов (Теория)
Когда мы пишем выражение типа 2 * 10 + 5
что мы имеем ввиду?
(2 * 10) + 5 = 25
или 2 * (10 + 5) = 30
?
Правильный ответ
(2 * 10) + 5 = 25
Python выбирает этот вариант из-за приоритетов операторов.
У операторов есть приоритеты. Чем выше приоритет тем раньше выполняется оператор.
Приоритет | Оператор |
---|---|
1 | бинарный + - |
2 | * / |
3 | унарный + - |
4 | ** (кроме случаев, когда унарный оператор справа) |
2 * 10 + 5
*
имеет больший приоритет чем +, поэтому вначале будет выполнено 2 * 10
20 + 5 = 25
2 * 2 ** 3
--> 2 * (2 ** 3)
--> 2 * 8
--> 16
-2 ** 4
--> -(2 ** 4)
-> --16
(в отличае от (-2) ** 4
--> 16
)
Кроме случаев, когда унарный оператор справа от **
2 ** -3
--> 2 ** (-3)
--> 0.125
Список всех операторов и их приоритетов
Советы:
- полагаться на приоритет операторов бывает сложно, можно пропустить баги
- лучше всего использовать скобки (с ними нагляднее)
- напечатать скобки это пара лишних нажатий, но они помогут избежать сложностей в будущем
лучше использовать (2 * 10) + 5
, чем 2 * 10 + 5