Функции

Сравнение объектов: «is» vs «==»

Для начала мы создадим объект типа list и назовем его a, затем определим другую переменную и присвоим ей значение a.

a = [1, 2, 3]
b = a

Давайте посмотрим, чему равны обе эти переменные.

a
[1, 2, 3]
b
[1, 2, 3]

Так как оба списка выглядят одинаковыми, то при сравнении их через оператор == мы получим ожидаемый результат True.

a == b
True

Но на самом деле это не говорит нам, что обе эти переменные ссылаются на один объект.

Мы, конечно, об этом знаем, так как недавно мы присвоили b = a, но предположим, что мы этого не знаем (так как во многих случаях мы реально не знаем). Как тогда узнать, ссылаются они на один объект или нет?

Для этого нужно использовать оператор ‘is’.

a is b
True

Давайте посмотрим, что будет, если мы создадим идентичную копию списка a. Мы можем сделать это путем вызова функции list():

c = list(a)
c 
[1, 2, 3]

А теперь переходим к интересному: если мы сравним c и a через оператор ==, то получим результат True:

a == c
True

Надеюсь, вы этого же и ожидали. Этот результат говорит о том, что переменная с имеет то же содержимое, что и переменная a. Вопрос второй: а ссылаются ли обе эти переменные на один объект?

a is c
False

Бум. Тут-то мы и получили другой результат. Python говорит, что переменная c и переменная а ссылаются на разные объекты, даже с учетом того, что они имеют одинаковое значение.

Давайте подведем итог. В чем же разница между == и is?

Оператор is выдает True, только если обе переменные ссылаются на один и тот же объект.

Выражение == будет выдавать True, если переменные имеют идентичное содержимое (значение).

Если добавить немного жизненного, то два котенка-близнеца одинаковы, но и различны.

admin

Recent Posts

10 удалённых Python-вакансий

Если вы ищете работу на Python, на Talanto.work сейчас есть варианты для junior, middle, senior…

6 месяцев ago

Где искать Python-вакансии в 2026 году: зачем на Talanto.work появился отдельный сценарий поиска

Рынок Python-вакансий большой, но удобным его назвать сложно. Формально вакансий много, однако в реальном поиске…

6 месяцев ago

Срезы в Python со всеми подробностями

Срезы в Python — это больше, чем a[2:7]. В статье — быстрый разбор полезных приёмов:…

8 месяцев ago

Возведение в степень в Python: полное руководство

В этой статье мы рассмотрим возведение в степень в Python с помощью различных методов, от…

9 месяцев ago

Как удалить дубликаты из списка Python?

Дубликаты в списке Python — частая проблема. В статье показано, как быстро убрать повторы, в…

9 месяцев ago

Виртуальный (shared) хостинг от SpaceWeb: технический обзор

Услуга виртуального хостинга на SpaceWeb позволяет арендовать часть сервера (shared-сервера) и разместить на нём свой…

11 месяцев ago