Эквивалентность идентификатора строки в Python при сравнении строки с пробелом

Когда я делаю

a = "myString"
b = "myString"

a is b
> True

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

a = "my string"
b = "my string"

a is b
> False

Почему это происходит? как пробел влияет на строку таким образом, что идентификаторы больше не совпадают?

это проблема только в python 2.7?


person Arturo    schedule 27.03.2019    source источник
comment
Вы не должны никогда полагаться на идентификатор строки при проверке на равенство строк. Правила интернирования строк и свертывания констант в блоках кода непонятны и различаются в разных версиях. В этом случае вы не должны ожидать, что идентичности будут одинаковыми, это хорошая оптимизация, которую делает за нас компилятор, но на которую вам не следует полагаться.   -  person juanpa.arrivillaga    schedule 27.03.2019