Я столкнулся с этим странным поведением, которое происходит только в интерактивном сеансе Python, но не тогда, когда я пишу script и выполняю его.
String - неизменяемый тип данных в Python, следовательно:
>>> s2='string'
>>> s1='string'
>>> s1 is s2
True
Теперь, странная часть:
>>> s1='a string'
>>> s2='a string'
>>> s1 is s2
False
Я видел, что наличие пробела в строке вызывает такое поведение. Если я поместил это в script и запустил его, в обоих случаях результат будет True.
Кто-нибудь знает об этом? Спасибо.
EDIT:
Хорошо, вышеупомянутые вопросы и ответы дают некоторые идеи. Теперь вот еще один эксперимент:
>>> s2='astringbstring'
>>> s1='astringbstring'
>>> s1 is s2
True
В этом случае строки определенно длиннее, чем 'a string'
, но все еще имеют одинаковые идентификаторы.