Поиск…


Вступление

Операторы 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


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow