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

После d = 'ld' и c = 'Hello Wor' + d значения c и a равны, но идентичность объектов языком не гарантируется. В обычном CPython такая конкатенация во время исполнения обычно создаёт другой объект.

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

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

После d = 'ld' и c = 'Hello Wor' + d значения c и a равны, но идентичность объектов языком не гарантируется. В обычном CPython такая конкатенация во время исполнения обычно создаёт другой объект.

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

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

Условие

Задание: объявить переменную d, содержащую строку "ld", и применить её для построения строки c вместо прямого литерала "ld". После этого нужно выяснить, указывает ли полученный объект c на тот же объект, что и переменная a.

a = "Hello World"
b = "Hello World"
c = "Hello Wor" + "ld"

Ответ

После d = 'ld' и c = 'Hello Wor' + d значения c и a равны, но идентичность объектов языком не гарантируется. В обычном CPython такая конкатенация во время исполнения обычно создаёт другой объект.

Проверять значение нужно через ==:

a = 'Hello World'
d = 'ld'
c = 'Hello Wor' + d
print(c == a)  # True
print(c is a)  # implementation-dependent identity

Литеральное выражение 'Hello Wor' + 'ld' компилятор может свернуть заранее и переиспользовать константу. Это не основание использовать is для сравнения строк. Результат идентичности может зависеть от версии, контекста компиляции и реализации Python; корректность программы не должна на нём строиться.

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

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

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

Подробнее