Python: id () zachowanie w interpretatorze [duplikat]

To pytanie ma już tutaj odpowiedź:

kiedy Python przydziela nową pamięć dla identycznych ciągów? 5 odpowiedzi

Natknąłem się na to dziwne zachowanie, które zdarza się tylko w interaktywnej sesji Pythona, ale nie wtedy, gdy piszę skrypt i wykonuję go.

Łańcuch jest niezmiennym typem danych w Pythonie, stąd:

>>> s2='string'
>>> s1='string'
>>> s1 is s2
True

Dziwna część:

>>> s1='a string'
>>> s2='a string'
>>> s1 is s2
False

Widziałem, że posiadanie białych znaków w łańcuchu powoduje to zachowanie. Jeśli wstawię to do skryptu i uruchomię, wynik w obu przypadkach będzie Prawda.

Czy ktoś miałby o tym jakieś pojęcie? Dzięki.

EDYTOWAĆ:

W porządku, powyższe pytanie i odpowiedzi dają pewne pomysły. Oto kolejny eksperyment:

>>> s2='astringbstring'
>>> s1='astringbstring'
>>> s1 is s2
True

W tym przypadku łańcuchy są zdecydowanie dłuższe niż'a string', ale wciąż mają te same identyfikatory.

questionAnswers(1)

yourAnswerToTheQuestion