Будет 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 продолжит обозначать прежнее значение.