63 Stimmen

Python: Warum wird ("hallo" ist "hallo") als True ausgewertet?

Warum ist "hello" is "hello" produzieren True in Python?

Ich habe Folgendes gelesen aquí :

Wenn zwei String-Literale gleich sind, wurden sie in denselben Speicherplatz abgelegt. Eine Zeichenkette ist eine unveränderliche Einheit. Es kann kein Schaden angerichtet werden.

Es gibt also nur einen einzigen Platz im Speicher für jede Python-Zeichenkette? Das klingt ziemlich seltsam. Was ist denn hier los?

1voto

Brian Rasmussen Punkte 112118

Warum ist das seltsam? Wenn die Zeichenfolge unveränderlich ist, macht es eine Menge Sinn, es nur einmal zu speichern. .NET hat das gleiche Verhalten.

0voto

Ich denke, wenn zwei Variablen (nicht nur Zeichenketten) denselben Wert enthalten, wird der Wert nur einmal und nicht zweimal gespeichert, und beide Variablen verweisen auf denselben Ort. Dies spart Speicher.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X