Определение, указывают ли две переменные на один и тот же объект строки

Будет True: s2 = s1 связывает второе имя с тем же строковым объектом. Интернирование строк для объяснения этого примера не требуется.

Короткий ответ

Что ответить на собеседовании

Будет True: s2 = s1 связывает второе имя с тем же строковым объектом. Интернирование строк для объяснения этого примера не требуется.

Подробный разбор

Ответ с пояснениями

Условие

В Python оператор is проверяет, находятся ли два объекта в одной области памяти. Посмотрите, какой вывод получим, если одна строка будет присвоена другой переменной.

s1 = 'Hello World!'
s2 = s1

print(s1 is s2)

Ответ

Будет True: s2 = s1 связывает второе имя с тем же строковым объектом. Интернирование строк для объяснения этого примера не требуется.

s1 = 'Hello World!'
s2 = s1
print(s1 is s2)  # True

is проверяет идентичность объектов, а не совпадение содержимого и не произвольное пересечение областей памяти. Присваивание ссылки не создаёт копию строки, поэтому результат гарантирован самой операцией присваивания.

При независимом построении двух одинаковых строк == будет проверять текст, тогда как is может дать другой результат. Если потом выполнить s1 += ' Again', имя s1 перепривяжется к новой строке, а s2 продолжит обозначать прежнее значение.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее