Python Language
Приоритет оператора
Поиск…
Вступление
Операторы Python имеют заданный порядок приоритета , который определяет, какие операторы сначала оцениваются в потенциально неоднозначном выражении. Например, в выражении 3 * 2 + 7 первое 3 умножается на 2, а затем результат добавляется к 7, что дает 13. Выражение не оценивается наоборот, потому что * имеет более высокий приоритет, чем +.
Ниже приведен список операторов по приоритету и краткое описание того, что они (как правило) делают.
замечания
Из документации Python:
Следующая таблица суммирует приоритеты операторов в Python, начиная с наименьшего приоритета (наименьшая привязка) до наивысшего приоритета (самая привязка). Операторы в том же поле имеют одинаковый приоритет. Если синтаксис явно не указан, операторы являются двоичными. Операторы в одной группе блоков слева направо (за исключением сравнений, включая тесты, все из которых имеют одинаковый приоритет и цепочку слева направо и экспоненциальность, которые группируются справа налево).
оператор | Описание |
---|---|
лямбда | Лямбда-выражение |
если еще | Условное выражение |
или же | Логическое ИЛИ |
а также | Логическое И |
не x | Boolean NOT |
in, not in, is, is, is, <, <=,>,> =, <>,! =, == | Сравнение, включая тесты на членство и тесты на идентичность |
| | Побитовое ИЛИ |
^ | Побитовое XOR |
& | Побитовое И |
<<, >> | Сдвиги |
+, - | Сложение и вычитание |
*, /, //,% | Умножение, деление, остаток [8] |
+ x, -x, ~ x | Положительный, отрицательный, побитовый NOT |
** | Экспоненциальность [9] |
x [index], x [index: index], x (аргументы ...), x.attribute | Подписка, нарезка, вызов, ссылка на атрибут |
(выражения ...), [выражения ...], {ключ: значение ...}, выражения ... | Отображение привязки или кортежа, отображение списка, отображение словаря, преобразование строк |
Простые примеры приоритетов операторов в python.
Python следует правилу PEMDAS. PEMDAS - это скобки, экспоненты, умножения и разделения, а также добавление и вычитание.
Пример:
>>> a, b, c, d = 2, 3, 5, 7
>>> a ** (b + c) # parentheses
256
>>> a * b ** c # exponent: same as `a * (b ** c)`
7776
>>> a + b * c / d # multiplication / division: same as `a + (b * c / d)`
4.142857142857142
Дополнительно: математические правила сохраняются, но не всегда :
>>> 300 / 300 * 200
200.0
>>> 300 * 200 / 300
200.0
>>> 1e300 / 1e300 * 1e200
1e+200
>>> 1e300 * 1e200 / 1e300
inf