Kann mir das jemand erklären? Ich habe also mit dem id()-Befehl in Python gespielt und bin auf das hier gestoßen:
>>> id('cat')
5181152
>>> a = 'cat'
>>> b = 'cat'
>>> id(a)
5181152
>>> id(b)
5181152
Das ergibt für mich einen gewissen Sinn, bis auf einen Teil: Die Zeichenkette "cat" hat eine Adresse im Speicher, bevor ich sie einer Variablen zuweise. Wahrscheinlich verstehe ich einfach nicht, wie Speicheradressierung funktioniert, aber kann mir das jemand erklären oder mir zumindest sagen, dass ich mich über Speicheradressierung informieren sollte?
Das ist ja alles schön und gut, aber das hat mich noch mehr verwirrt:
>>> a = a[0:2]+'t'
>>> a
'cat'
>>> id(a)
39964224
>>> id('cat')
5181152
Das kam mir seltsam vor, weil 'Katze' ist eine Zeichenkette mit der Adresse 5181152, aber die neue a hat eine andere Adresse. Wenn es also zwei 'Katze' Strings im Speicher, warum werden nicht zwei Adressen für id('Katze') ? Mein letzter Gedanke war, dass die Verkettung etwas mit der Änderung der Adresse zu tun hat, also habe ich Folgendes versucht:
>>> id(b[0:2]+'t')
39921024
>>> b = b[0:2]+'t'
>>> b
'cat'
>>> id(b)
40000896
Ich hätte erwartet, dass die IDs identisch sind, aber das war nicht der Fall. Was denken Sie?