Heim > Artikel > Backend-Entwicklung > Warum scheint die Python-String-Verkettung Strings zu ändern?
Die Illusion der Python-String-Veränderlichkeit: A " " B
Python-Strings sind weithin für ihre Unveränderlichkeit bekannt. Das von Ihnen bereitgestellte Codebeispiel mit einem „ „ b wirft jedoch Fragen zu dieser grundlegenden Eigenschaft auf. Lassen Sie uns in die Erklärung hinter diesem scheinbar widersprüchlichen Verhalten eintauchen.
Die Geschichte der Variablen
Wenn wir einer Variablen eine Zeichenfolge zuweisen, z. B. a = „Dog“, wird sie erstellt einfach einen Verweis auf diese Zeichenfolge im Speicher. Die Variable besitzt keine Kopie der Zeichenfolge selbst und hält diese auch nicht. vielmehr weist es darauf hin. Dies ist die Essenz der String-Unveränderlichkeit in Python.
The New Object Magic
Wenn Sie in dem von Ihnen erwähnten Code ein „ “ b schreiben, ist dies nicht der Fall Ändern der Zeichenfolgen, auf die a oder b zeigen. Stattdessen erstellen Sie eine neue Zeichenfolge, die die Verkettung beider Zeichenfolgen darstellt. Dieser neu erstellte String wird dann einer neuen Referenz zugewiesen, wobei die ursprünglichen Strings unberührt bleiben.
Variablenneuzuweisung
Der entscheidende Punkt hier ist die folgende Codezeile:
a = a + " " + b + " " + c
Diese Zeile ändert nicht die Zeichenfolge, auf die a zuvor gezeigt hat, sondern weist a neu zu, um auf die neue Zeichenfolge zu zeigen, die Sie gerade erstellt haben. Daher zeigt a nun auf die verkettete Zeichenfolge „Hund isst Leckerlis“, während die ursprüngliche Zeichenfolge „Hund“ unverändert bleibt.
Schlussfolgerung
Obwohl es so aussehen mag Obwohl die Zeichenfolge „Dog“ mutiert wird, erstellt und weist Python während des gesamten Prozesses neue Zeichenfolgen zu. Die Unveränderlichkeit von Zeichenfolgen bleibt erhalten und stellt sicher, dass der Inhalt einer Zeichenfolge nach der Erstellung nicht mehr geändert werden kann.
Das obige ist der detaillierte Inhalt vonWarum scheint die Python-String-Verkettung Strings zu ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!