Знаки действий в Python: +=, //, %, and, in и приоритет операций

Справочникобновлено 07.10.20269 мин чтенияесть тренажёр

Операторы Python — это знаки и слова, которые выполняют действие над значениями: + складывает, == сравнивает, and соединяет условия, += меняет переменную. Ниже собраны все группы с примерами, таблица приоритета и квиз из 9 вопросов «что выведет программа».

Загружаем…

Что такое операторы в Python

Оператор — это символ или слово, которое берёт одно или два значения (операнды) и возвращает результат. В выражении 3 + 4 оператор — плюс, операнды — 3 и 4, результат — 7.

Операторы делят на группы по тому, что они делают: арифметические считают, операции сравнения отвечают «да» или «нет», логические соединяют условия, присваивание записывает значение в переменную, а проверки in и is ищут элемент или сравнивают объекты. Большинство знаков знакомы по математике, но у нескольких в Python свой смысл: = не равенство, а запись в переменную, // — деление нацело, ** — степень.

Один и тот же знак может работать по-разному для разных типов. Плюс складывает числа, но склеивает строки: "кот" + "ёнок" даёт «котёнок». Звёздочка умножает числа, но повторяет строку: "ха" * 3 — это «хахаха». А вот "5" + 1 не сработает: строку и число смешивать нельзя, будет TypeError.

Точные правила для всех операторов Python описаны в официальной документации Python, в главе о выражениях. Там объясняется и причина «двойной жизни» знаков: что сделает оператор, решает тип значения, поэтому строка и число по-разному понимают один и тот же плюс. Учить главу целиком не нужно. Полезнее привычка проверять любое сомнительное выражение запуском: напишите его в редакторе, выведите через print и сравните с тем ответом, который ожидали получить.

Арифметические операторы

В Python 7 арифметических операторов: сложение, вычитание, умножение, обычное деление, деление нацело, остаток и степень. Обычное деление / всегда даёт дробное число, даже если делится без остатка.

ЗнакДействиеПримерРезультат
+Сложение, склейка строк7 + 29
-Вычитание7 - 25
*Умножение, повтор строки7 * 214
/Деление7 / 23.5
//Деление нацело (вниз)7 // 23
%Остаток от деления7 % 21
**Возведение в степень7 ** 249

Деление нацело и остаток — самые полезные для задач. Остаток от деления на 2 показывает чётность: n % 2 == 0 — число чётное. Последняя цифра числа — n % 10, число без последней цифры — n // 10. На этих двух действиях построены задачи про цифры числа, которые часто встречаются в задании 16 ОГЭ[1]. Будьте внимательны с отрицательными числами: // округляет вниз, к меньшему, поэтому -7 // 2 равно −4, а -7 % 2 равно 1.

n = 2026
print(n % 10)
print(n // 10)
print(n % 2 == 0)
6
202
True

Операторы сравнения

Сравнение — это вопрос к Python, на который он отвечает True или False. Таких операторов 6: ==, !=, <, >, <=, >=.

vozrast = 12
print(vozrast == 12)
print(vozrast != 12)
print(10 <= vozrast < 14)
print("арбуз" < "банан")

Двойное равно == сравнивает, одинарное = присваивает. Если перепутать их в условии if x = 5:, Python сообщит о синтаксической ошибке. Удобная особенность языка — цепочки: 10 <= vozrast < 14 читается как в математике и означает «от 10 включительно до 14». Строки сравниваются по алфавиту, точнее по кодам символов, поэтому заглавные буквы идут раньше строчных, а «ё» стоит отдельно от «е». Сравнения чаще всего живут внутри условий — о них подробно в уроке про условия if и elif.

Логические операторы and, or, not

Логические операторы соединяют несколько условий в одно: and — «и», нужно, чтобы выполнились оба; or — «или», хватит одного; not — «не», переворачивает ответ.

ball = 4
sdal_dz = True
print(ball >= 4 and sdal_dz)
print(ball == 5 or sdal_dz)
print(not sdal_dz)

Логические операции И, ИЛИ, НЕ по федеральной образовательной программе изучают на информатике в 8 классе[2], причём в тетради их часто пишут как конъюнкцию и дизъюнкцию. В Python у not приоритет выше, чем у and, а у and — выше, чем у or. Поэтому True or False and False даёт True: сначала считается False and False. Если сомневаетесь, ставьте скобки. Таблицы истинности для всех трёх операций можно построить в тренажёре на странице про логические операции.

Ещё одна особенность — «короткое замыкание»: если левая часть and ложна, правая даже не вычисляется. Поэтому условие d != 0 and 10 / d > 2 безопасно при нуле: до деления дело не дойдёт.

Присваивание и составные операторы

Оператор = записывает значение справа в переменную слева. Составные операторы +=, -=, *=, /=, //=, %=, **= — это сокращения: x += 3 значит то же, что x = x + 3.

ochki = 0
ochki += 10
ochki -= 3
ochki *= 2
print(ochki)
a, b = 1, 2
a, b = b, a
print(a, b)

В этом примере очки сначала растут до 10, потом уменьшаются до 7 и удваиваются до 14. Последние строки показывают приём, которого нет во многих других языках: обмен значениями двух переменных в одну строку, без третьей переменной. Учтите, что записи x++ в Python нет: такой оператор есть в C++ и Java, а здесь пишут x += 1. Руководство PEP 8 рекомендует ставить по одному пробелу вокруг = и составных операторов[3].

Проверки in и is

Оператор in проверяет, есть ли элемент внутри строки, списка или словаря, а is — это один и тот же объект или нет. Для новичка важен прежде всего in; is нужен в основном для проверки на None.

glasnye = "аеёиоуыэюя"
print("о" in glasnye)
print("к" not in glasnye)
spisok = [3, 7, 11]
print(7 in spisok)
otvet = None
print(otvet is None)

Конструкция not in читается естественно: «не входит в». Для словаря in проверяет ключи, а не значения. Сравнивать числа или строки через is не нужно: для этого есть ==, а is иногда даёт неожиданный результат, потому что проверяет совпадение объектов в памяти, а не значений.

Приоритет операций

Приоритет — это порядок, в котором Python выполняет действия в одном выражении. Как в математике, степень считается раньше умножения, а умножение — раньше сложения; скобки меняют порядок.

ПорядокЧто выполняетсяПример
1Скобки ( )(2 + 3) * 4 = 20
2Степень **2 * 3 ** 2 = 18
3Унарный минус -x-2 ** 2 = −4
4*, /, //, %10 - 6 // 4 = 9
5+, -2 + 3 * 4 = 14
6Сравнения, in, is1 + 1 == 2 → True
7not, затем and, затем ornot 1 > 2 and 3 > 2 → True

Самая неожиданная строка — третья: -2 ** 2 равно −4, потому что степень сильнее унарного минуса. Чтобы получить 4, пишите (-2) ** 2. Действия одного уровня выполняются слева направо, кроме степени: 2 ** 3 ** 2 считается справа налево и даёт 512. Полную таблицу приводит официальная документация Python, но для школьных задач хватает правила: сомневаешься — ставь скобки.

Скобки помогают и читателю. Руководство PEP 8 советует в выражениях с разным приоритетом выделять пробелами действия с самым низким приоритетом: y = x*2 - 1 читается быстрее, чем запись, где пробелы стоят везде одинаково. В самом PEP 8 этот совет сформулирован как пожелание, а не как строгое правило, поэтому оба способа записи считаются правильными. Если вы пишете операторы Python в длинной формуле, разбейте её на две-три строки с промежуточными переменными: так легче найти ошибку.

Когда привычная запись не работает

Не стоит переносить в Python запись из тетради или другого языка без проверки: некоторые знаки здесь значат другое. Вот 4 случая, на которых чаще всего ошибаются.

  • Знак ^ вместо степени. 2 ^ 3 даёт 1, а не 8: это побитовая операция, степень пишется 2 ** 3.
  • Запись x++ из C++. В Python её нет, увеличение на 1 пишут x += 1.
  • Проверка 0 < x > 10. Цепочка означает 0 < x and x > 10, а не «x между 0 и 10».
  • Деление с проверкой 0.1 + 0.2 == 0.3. Дробные числа хранятся приближённо, и сравнение даёт False; сравнивайте с округлением до 2 знаков.

Миф: «// просто отбрасывает дробную часть, как int()». Это не подтверждается для отрицательных чисел: int(-3.5) даёт −3, а -7 // 2 даёт −4, потому что деление нацело округляет вниз.

Миф: «and и or всегда возвращают True или False». Это не так: 0 or 5 вернёт 5, а "" and "кот" — пустую строку. Особого логического типа у результата не существует, оператор отдаёт один из операндов. В условиях if это незаметно, а в print — видно.

Чего делать нельзя

Нельзя путать похожие знаки: одна лишняя или пропущенная черта меняет смысл программы. Вот шесть ошибок, которые встречаются у начинающих чаще всего.

  • Нельзя писать = в условии вместо == — Python не запустит программу.
  • Не следует складывать строку и число: "Очки: " + 5 вызовет TypeError, нужно str(5).
  • Не стоит надеяться на порядок действий в длинном логическом выражении — расставьте скобки.
  • Не допускается делить на ноль через /, // или %: будет ZeroDivisionError.
  • Не стоит сравнивать числа через is — для значений есть ==.
  • Не следует ставить пробелы внутри составного знака: + = и / / — это ошибка.

Что делать, если программа всё-таки упала при делении, разобрано на странице про ошибку ZeroDivisionError.

Источники

[1] ФИПИ. Методические рекомендации для обучающихся по организации индивидуальной подготовки к ОГЭ 2026 года. Информатика. М., 2026.

[2] Приказ Минпросвещения России от 18.05.2023 № 370 «Об утверждении федеральной образовательной программы основного общего образования».

[3] van Rossum G., Warsaw B., Coghlan N. PEP 8 — Style Guide for Python Code. Python Software Foundation, 2001.

[4] The Python Tutorial (официальная документация Python 3). Python Software Foundation.

Вопросы и ответы

Сколько всего операторов в Python?

Точное число зависит от того, как считать: кроме арифметики, сравнений и логики есть побитовые, а у присваивания больше десятка форм. Школьнику для задач хватает тех, что перечислены на этой странице.

Где посмотреть полный список операторов Python?

В официальной документации Python, в разделах о выражениях и о встроенных типах. Там же есть полная таблица приоритета, включая побитовые операции, которые в школьных задачах встречаются редко.

Чем / отличается от //?

Одинарная черта даёт точный дробный результат: 7 / 2 = 3.5. Двойная даёт целую часть с округлением вниз: 7 // 2 = 3. Для подсчёта, сколько раз одно число помещается в другом, нужна двойная.

Как проверить, что число делится на 3?

Остаток от деления должен быть нулевым: n % 3 == 0. Так же проверяют делимость на любое число, кроме нуля.

Почему 2 ** 3 ** 2 равно 512?

Степень считается справа налево: сначала 3 ** 2 = 9, потом 2 ** 9 = 512. Если нужно (2 ** 3) ** 2 = 64, поставьте скобки.

Где в Python оператор «не равно»?

Это !=. Знак <> из Паскаля и старых версий языка в Python 3 не работает.

Есть ли в Scratch такие же операторы?

Да, в категории «Операторы» есть блоки для арифметики, сравнения, «и», «или», «не», а также «остаток от деления». Приоритет там задаёт вложенность блоков, поэтому скобки не нужны.