Сообщить об ошибке.

Приоритет выполнения операций

Выражение - это код, который интерпретатор Python вычисляет для получения значения. Простейшими выражениями являются литералы и идентификаторы. Другие выражения строятся посредством объединения подвыражений с помощью операторов, выполняющих соответствующие операции и/или разделителей.

Ниже, операции/выражения перечислены в порядке уменьшения приоритета. Операции с более высоким приоритетом выполняются до выполнения операций с более низким приоритетом. Операции, указанные в одной строке, имеют одинаковый приоритет.


  1. Создание словаря, генератор словарей:
    {key: expr, ... }
    {key: expr for item in Iterator if conditional}
  2. Создание множества, генератор множеств:
    {expr, ... }
    {expr for item in Iterator if conditional}
  3. Создание списка, генератор списков:
    [expr, ... ]
    [ expr for item in Iterator if conditional ]
  4. Создание кортежа, подвыражение (просто скобки), выражение-генератор:
    (expr, ... )
    (expr for item in iterator)
  5. Обращение к атрибуту:
    x.attr
  6. Вызов функции:
    f(expr, ... )
  7. Выделение среза:
    x[start: stop: step]
  8. Взятие элемента по индексу:
    x[index]
  9. Возведение в степень (x в степени y):
    x**y
  10. Побитовое НЕ (инверсия):
    ~x
  11. Унарные "плюс" и "минус", тождественность:
    +x, -x
  12. Деление: истинное и с округлением вниз:
    x / у, x // у
  13. Остаток от деления, формат:
    x % у
  14. Умножение, повторение:
    x * у
  15. Вычитание, разность множеств:
    x - у
  16. Сложение и конкатенация:
    x + у
  17. Сдвиг значения x влево или вправо на y битов:
    x << у, x >> у
  18. Побитовое И, пересечение множеств:
    x & у
  19. Побитовое исключающее ИЛИ, симметрическая разность множеств:
    x ^ у
  20. Побитовое ИЛИ, объединение множеств:
    x l y
  21. Операторы проверки на равенство:
    x != у, x == у
  22. Операторы сравнения, проверка на подмножество и надмножество:
    x < у, x <= у,
    x > у, x >= у,
  23. Проверка идентичности (тождественности) объектов:
    x is у, x is not у
  24. Проверки на вхождение/принадлежности (для итерируемых объектов и множеств):
    x in у, x not in у
  25. Логическое НЕ (отрицание):
    not x
  26. Логическое И, значение y вычисляется, только если значение x истинно:
    x and у
  27. Логическое ИЛИ, значение y вычисляется, только если значение x ложно:
    x or у
  28. Трехместный оператор выбора, значение x вычисляется, только если значение y истинно:
    x if expr else у
  29. Создание анонимной функции:
    lambda x, ...: expr
  30. Поддержка протокола send в функциях-генераторах:
    yield x

Примечание:

  • Символы ... означают запятые, присоединяющие нуль или более повторений предыдущего компонента. Во всех подобных случаях замыкающая запятая является необязательной, и ее наличие ни на что не влияет.
  • Синтаксическая конструкция [...] используется для определения литералов списков и выражений-генераторов списков. В последнем случае предполагается выполнение цикла и накопление результатов в новом списке.
  • Синтаксическая конструкция (...) используется для определения кортежей, подвыражений и выражений-генераторов - разновидности генераторов списков, которая воспроизводит значения по требованию.
  • Синтаксическая конструкция {...} используется для определения литералов словарей, для определения литералов множеств, генераторов словарей и множеств.
  • Инструкция yield в функциях-генераторах возвращает аргументы функции. Если инструкция yield - не единственное, что находится справа от оператора присваивания, она должна заключаться в круглые скобки.
  • Трехместный оператор выбора x if expr else у является краткой формой записи многострочной инструкции if ... else.
  • Операторы сравнений могут объединяться в цепочки: например x < y < z воспроизводит тот же результат, что и конструкция x < y and y < z.
  • выражение извлечения среза x[i:j:k] является эквивалентом операции индексирования с применением объекта среза: x[slice(i, j, k)].