Vergleich von Strings: Rätsel „==“ vs. „is“
Beim Programmieren ist der Vergleich von Strings oft ein entscheidender Vorgang. Die Verwendung der Operatoren „==“ und „is“ kann jedoch manchmal zu unterschiedlichen Ergebnissen führen, was Entwickler verwirrt.
Den Unterschied verstehen
Der Operator „=“ prüft auf Wertgleichheit, während „is“ auf Identität im Speicher prüft. Identitätstests ermitteln, ob zwei Variablen auf genau dasselbe Objekt im Speicher verweisen, während Gleichheitstests ihre Werte vergleichen.
Warum der Unterschied auftritt
Beim Vergleich von Zeichenfolgen optimiert Python Speichernutzung durch Wiederverwendung vorhandener Zeichenfolgen. Wenn Sie also mehreren Variablen denselben Zeichenfolgenwert zuweisen, werden möglicherweise keine neuen Zeichenfolgenobjekte erstellt, sondern es wird auf dasselbe zugrunde liegende Objekt verwiesen. Dies erklärt, warum „==“ für gleiche Zeichenfolgen „True“ zurückgeben kann.
Wenn die Zeichenfolgen jedoch verändert werden oder ihnen unterschiedliche Werte zugewiesen werden, werden neue Objekte erstellt, wodurch die Identitätsverknüpfung unterbrochen wird. Infolgedessen würde „is“ „False“ zurückgeben, obwohl „==“ immer noch „True“ zurückgibt, da die Werte gleich sind.
Beispiel
Bedenken Sie den folgenden Code:
s1 = 'text' s2 = 'text'
Hier verweisen sowohl s1 als auch s2 auf dasselbe String-Objekt, sodass sowohl „==“ als auch „is“ „True“ zurückgeben. Wenn wir jedoch s2 ändern:
s2 = s2 + ' more'
Jetzt wird ein neues String-Objekt für s2 erstellt, wodurch die Identitätsverknüpfung unterbrochen wird. Während '==' immer noch True zurückgibt, weil die Werte gleich sind, gibt 'is' False zurück, weil s1 und s2 auf unterschiedliche Objekte verweisen.
Das obige ist der detaillierte Inhalt vonPython-String-Vergleich: Wann sollte ich „==' vs. „is' verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!