Enthüllung der Diskrepanzen bei String-Vergleichen mit „==“ und „is“
Bei der Python-Programmierung kann es vorkommen, dass Sie auf scheinbar widersprüchliche Ergebnisse stoßen, wenn Vergleichen von Zeichenfolgen mit den Operatoren „==“ und „is“. Um diese Unterschiede zu verstehen, schauen wir uns die Natur dieser Operatoren genauer an.
Gleichheitstest vs. Identitätstest
Der Operator „==“ führt einen Gleichheitstest durch und bestimmt, ob zwei Werte haben den gleichen Inhalt. Im Gegensatz dazu führt der „is“-Operator einen Identitätstest durch und überprüft, ob zwei Variablen auf genau dasselbe Objekt im Speicher verweisen.
Veranschaulichung der Diskrepanzen
Betrachten Sie das folgende Szenario :
s1 = 'text' s2 = 'text'
In diesem Fall gibt 's1 == s2' stets True zurück, was darauf hinweist, dass die beiden Zeichenfolgen erfüllt sind der gleiche Textinhalt. Allerdings kann „s1 ist s2“ manchmal „False“ zurückgeben, was Sie verwirrt.
Die Perspektive des Python-Interpreters
Um dieses Verhalten zu verstehen, ist es wichtig zu erkennen, wie Python funktioniert Der Interpreter verarbeitet Zeichenfolgen. Wenn Sie einer String-Variablen einen Wert zuweisen, prüft Python, ob der Wert bereits im Speicher gespeichert ist. Wenn dies der Fall ist, weist es der Variablen einen Verweis auf das vorhandene Objekt zu.
Bedenken Sie Folgendes:
a = 'pub' b = ''.join(['p', 'u', 'b'])
Obwohl sie denselben Textinhalt haben, sind „a“ und „b“ nicht dasselbe gleiche Objekte im Gedächtnis. „a“ verweist auf ein vorhandenes String-Objekt, während „b“ auf ein neu erstelltes Objekt verweist. Somit ist „a == b“ wahr (Gleichheitsprüfung), aber „a ist b“ ist falsch (Identitätsprüfung).
Schlussfolgerung
Den Unterschied verstehen zwischen Gleichheitstests (mit „==“) und Identitätstests (mit „is“) ist für genaue String-Vergleiche in Python unerlässlich. Denken Sie daran, dass „is“ Verweise auf dasselbe Speicherobjekt überprüft, während „==“ deren Inhalt vergleicht.
Das obige ist der detaillierte Inhalt vonPython-String-Vergleiche: Wann unterscheidet sich „==' von „is'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!