Сравнение строк в Python: is vs == на примере join

Сравнение строк в Python: is vs == на примере join

@python_quiz

Разберем этот квиз

Коротко: у вас две строки с одинаковым содержимым, но созданные по-разному. Код помогает понять разницу между сравнением по значению и сравнением по идентичности объекта.

Условие (код)

python

Запуск этого кода покажет, что логическое сравнение по значению и сравнение ссылок дают разные результаты. Разберём, почему так происходит.

Что делает код

  • a — литерал строки, создаётся при компиляции/загрузке модуля.
  • b — новая строка, создаётся в момент выполнения выражения join.
  • == сравнивает содержимое объектов (значение).
  • is проверяет, ссылаются ли переменные на один и тот же объект в памяти (идентичность).

Демонстрация и дополнительная информация

Чтобы наглядно увидеть идентификаторы объектов, можно вывести id:

python

Если дополнительно использовать intern, можно заставить обе переменные ссылаться на один объект:

python

Почему == возвращает True

== у строк реализован как посимвольное сравнение содержимого. Если все символы совпадают и длина равна, результат — True. В нашем примере оба объекта содержат последовательность символов 'p' и 'y', значит по значению они равны.

Почему is возвращает False

is

Report Page