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
?