Когда я делаю
a = "myString"
b = "myString"
a is b
> True
и это верно, если строки идентичны, независимо от длины. однако, когда я добавляю туда пробел, личность уже не та. так
a = "my string"
b = "my string"
a is b
> False
Почему это происходит? как пробел влияет на строку таким образом, что идентификаторы больше не совпадают?
это проблема только в python 2.7?






Вы должны никогда не полагайтесь на идентификатор строки при проверке на равенство строк. Правила интернирования строк и свертывания констант в блоках кода непонятны и различаются в разных версиях. В данном случае вы не должны ожидать, что личности будут одинаковыми, это удачная оптимизация, которую делает за нас компилятор, но на которую не стоит полагаться.