Поведение 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'
, но все еще имеют те же идентификаторы.