Python string interning

Chociaż to pytanie nie ma żadnego praktycznego zastosowania w praktyce, jestem ciekawy, jak Python robi internowanie łańcuchowe. Zauważyłem, co następuje.

>> "string" is "string"
>> True

Tak się spodziewałem.

Możesz to zrobić również.

>> "strin"+"g" is "string"
>> True

I to jest całkiem sprytne!

Ale nie możesz tego zrobić.

>> s1 = "strin"
>> s2 = "string"
>> s1+"g" is s2
>> False

Dlaczego Python nie miałby oceniaćs1+"g"i zdaj sobie sprawę, że jest taki sam jaks1 i wskazać ten sam adres? Co tak naprawdę dzieje się w tym ostatnim bloku, aby go zwrócićFalse?

questionAnswers(2)

yourAnswerToTheQuestion