Что такое операторы в Python
Оператор — это символ или слово, которое берёт одно или два значения (операнды) и возвращает результат. В выражении 3 + 4 оператор — плюс, операнды — 3 и 4, результат — 7.
Операторы делят на группы по тому, что они делают: арифметические считают, операции сравнения отвечают «да» или «нет», логические соединяют условия, присваивание записывает значение в переменную, а проверки in и is ищут элемент или сравнивают объекты. Большинство знаков знакомы по математике, но у нескольких в Python свой смысл: = не равенство, а запись в переменную, // — деление нацело, ** — степень.
Один и тот же знак может работать по-разному для разных типов. Плюс складывает числа, но склеивает строки: "кот" + "ёнок" даёт «котёнок». Звёздочка умножает числа, но повторяет строку: "ха" * 3 — это «хахаха». А вот "5" + 1 не сработает: строку и число смешивать нельзя, будет TypeError.
Точные правила для всех операторов Python описаны в официальной документации Python, в главе о выражениях. Там объясняется и причина «двойной жизни» знаков: что сделает оператор, решает тип значения, поэтому строка и число по-разному понимают один и тот же плюс. Учить главу целиком не нужно. Полезнее привычка проверять любое сомнительное выражение запуском: напишите его в редакторе, выведите через print и сравните с тем ответом, который ожидали получить.
Арифметические операторы
В Python 7 арифметических операторов: сложение, вычитание, умножение, обычное деление, деление нацело, остаток и степень. Обычное деление / всегда даёт дробное число, даже если делится без остатка.
| Знак | Действие | Пример | Результат |
+ | Сложение, склейка строк | 7 + 2 | 9 |
- | Вычитание | 7 - 2 | 5 |
* | Умножение, повтор строки | 7 * 2 | 14 |
/ | Деление | 7 / 2 | 3.5 |
// | Деление нацело (вниз) | 7 // 2 | 3 |
% | Остаток от деления | 7 % 2 | 1 |
** | Возведение в степень | 7 ** 2 | 49 |
Деление нацело и остаток — самые полезные для задач. Остаток от деления на 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, is | 1 + 1 == 2 → True |
| 7 | not, затем and, затем or | not 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это незаметно, а в
Чего делать нельзя
Нельзя путать похожие знаки: одна лишняя или пропущенная черта меняет смысл программы. Вот шесть ошибок, которые встречаются у начинающих чаще всего.
- Нельзя писать
=в условии вместо==— 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 такие же операторы?
Да, в категории «Операторы» есть блоки для арифметики, сравнения, «и», «или», «не», а также «остаток от деления». Приоритет там задаёт вложенность блоков, поэтому скобки не нужны.