Python-Strings: Unveränderliche Entitäten und Zuweisungsverwirrung
Python ist stolz auf die Unveränderlichkeit seiner Strings, was bedeutet, dass einmal erstellte String-Werte nicht geändert werden können . Das verwirrende Verhalten, das bei einer versuchten Zeichenfolgenverkettung auftritt, wirft jedoch Fragen zu dieser Unveränderlichkeit auf.
Das Rätsel: Unveränderliche Zeichenfolgen durch Verkettung mutieren?
Bedenken Sie den folgenden Codeausschnitt:
<code class="python">a = "Dog" b = "eats" c = "treats" print(a, b, c) # Dog eats treats print(a + " " + b + " " + c) # Dog eats treats print(a) # Dog a = a + " " + b + " " + c print(a) # Dog eats treats # Surprise!</code>
Der Code initialisiert zunächst drei Zeichenfolgen und verkettet sie dann mit Leerzeichen. Zu unserem Erstaunen ändert sich der Wert von a nach der Neuzuweisung zum verketteten Ergebnis.
Die Enthüllung: Variablenneuzuweisung, nicht String-Mutation
Der Schlüssel zum Verständnis dieses Verhaltens liegt darin in der Erkenntnis, dass Python-Strings tatsächlich unveränderlich sind, während ihre Referenzen veränderbar sind. Wenn wir a in der letzten Zeile neu zuweisen, ändern wir die vorhandene Zeichenfolge „Hund“ nicht. Stattdessen erstellen wir eine neue Zeichenfolge „Hund isst Leckereien“ und weisen ihre Referenz a zu.
Die unveränderliche Wahrheit bleibt
Im Wesentlichen speichert eine Zeichenfolgenvariable die Adresse (oder Verweis) auf einen Zeichenfolgenwert, nicht auf den Wert selbst. Wir können die Variable anderen Adressen neu zuweisen, aber die String-Werte an diesen Adressen bleiben unverändert.
Obwohl es daher so aussieht, als würden wir Strings durch Verkettungen ändern, erstellen wir lediglich neue Strings und weisen die Referenzen neu zu . Die Unveränderlichkeit von Strings bleibt erhalten.
Das obige ist der detaillierte Inhalt vonWie kann die String-Verkettung unveränderliche Strings in Python mutieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!