Хотя этот вопрос не имеет реального применения на практике, мне любопытно, как Python выполняет интернирование строк. Я заметил следующее.
>> "string" is "string"
>> True
Это как я и ожидал.
Вы также можете сделать это.
>> "strin"+"g" is "string"
>> True
И это довольно умно!
Но ты не можешь сделать это.
>> s1 = "strin"
>> s2 = "string"
>> s1+"g" is s2
>> False
Почему Python не может оценить s1+"g"
и понять, что он такой же, как s1
и указать на тот же адрес? Что на самом деле происходит в последнем блоке, чтобы вернуть значение False
?