Как работают операторы in, not in, is, is not?

in и not in — операторы принадлежности: проверяют, входит ли элемент в последовательность или коллекцию (x in s, x not in s). is и is not — операторы тождественности: проверяют, ссылаются ли две переменные на один и тот же объект в памяти (x is y, x is not y).

Операторы in и not in — проверка принадлежности. 

Операторы in и not in используются, чтобы узнать, содержится ли значение внутри другой сущности: списка, кортежа, строки, множества, словаря и т.п.

x in s возвращает True, если x является элементом s (или ключом для словаря).

x not in s возвращает True, если x не содержится в s.

Примеры:

numbers = [1, 2, 3]
3 in numbers       # True
5 in numbers       # False
5 not in numbers   # True
text = "hello"
"h" in text        # True
"x" not in text    # True
data = {"id": 1, "name": "TeoBrain"}
"id" in data       # True  (проверяются ключи словаря)
"TeoBrain" in data # False

На собеседовании важно подчеркнуть, что для словаря in проверяет именно ключи, а не значения. В реальном backend‑коде это постоянно используется при проверке наличия полей в данных запроса, конфиге или JSON‑объекте.

Операторы is и is not — проверка тождества

is и is not — это операторы тождественности (identity). Они отвечают на вопрос: «Эти две переменные указывают на один и тот же объект в памяти или нет?»

x is yTrue, если x и y ссылаются на один и тот же объект.

x is not yTrue, если это разные объекты.

Пример:

a = [1, 2, 3]
b = [1, 2, 3]
c = a
a == b   # True  (значения равны)
a is b   # False (разные объекты)
a is c   # True  (это один и тот же объект)
a is not b  # True

На практике is чаще всего используют для сравнения с None (рекомендация стиля):

value = None
if value is None:
   ...

Именно это ожидают услышать интервьюеры, когда спрашивают про разницу == и is.

Как не перепутать операторы на собеседовании?

Краткое правило, которое уместно проговорить: Для проверки принадлежности в коллекции — in / not in. Для проверки тождественности (один и тот же объект) — is / is not. Для проверки равенства значений — ==, а не is.

Типичная ошибка, о которой любят спрашивать: использование is вместо == для чисел и строк. Это может давать «случайно правильный» результат из‑за внутренних оптимизаций, но считается неправильной практикой.

На курсах TeoBrain мы отдельно отрабатываем это на задачах: когда вы пишете проверки входных данных, валидируете JSON или сравниваете объекты доменной модели, важно на автомате выбирать правильный оператор и уметь объяснить, почему выбран именно он.

Назад к списку