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