Поведение Python: id () в интерпретаторе [duplicate]

На этот вопрос уже есть ответ здесь:

когда Python выделяет новую память для идентичных строк? 5 ответов

Я столкнулся с этим странным поведением, которое происходит только во время интерактивного сеанса Python, но не тогда, когда я пишу скрипт и выполняю его.

String - это неизменяемый тип данных в Python, поэтому:

>>> s2='string'
>>> s1='string'
>>> s1 is s2
True

Теперь странная часть:

>>> s1='a string'
>>> s2='a string'
>>> s1 is s2
False

Я видел, что наличие пробела в строке вызывает такое поведение. Если я положу это в сценарий и запусту, в обоих случаях результат будет True.

У кого-нибудь есть подсказка по этому поводу? Благодарю.

РЕДАКТИРОВАТЬ:

Хорошо, приведенный выше вопрос и ответы дают некоторые идеи. Теперь вот еще один эксперимент:

>>> s2='astringbstring'
>>> s1='astringbstring'
>>> s1 is s2
True

В этом случае строки определенно длиннее, чем'a string', но все еще имеют те же идентификаторы.

Ответы на вопрос(1)

Ваш ответ на вопрос