Python: id () zachowanie w interpretatorze [duplikat]
To pytanie ma już tutaj odpowiedź:
kiedy Python przydziela nową pamięć dla identycznych ciągów? 5 odpowiedziNatknął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.