Heim >Backend-Entwicklung >Python-Tutorial >Wie wirkt sich die Python-String-Internierung auf String-Vergleiche aus und wann sollten Sie „sys.intern()' verwenden?
Python-String-Internierung verstehen
String-Internierung, ein Python-Implementierungsdetail, beinhaltet die Erstellung nur einer Instanz eines String-Werts, wenn dieser mehrmals vorkommt in einem Programm. Diese Optimierung beschleunigt die Programmausführung, indem sie den für die Zeichenfolgenspeicherung verwendeten Speicher reduziert.
In Python werden konstante Zeichenfolgen zur Kompilierungszeit normalerweise interniert. Dadurch können Sie zwei String-Literale direkt auf Gleichheit vergleichen:
"string" is "string"
Dieser Vergleich gibt „True“ zurück, da die beiden String-Literale dasselbe Objekt sind.
String-Internierung gilt jedoch nicht zu Laufzeitausdrücken. Betrachten Sie den folgenden Code:
s1 = "strin" s2 = "string" s1 + "g" is s2
Sie können davon ausgehen, dass dieser Ausdruck „True“ ergibt, da das Hinzufügen von „g“ zu „strin“ zu „string“ führt. Es wird jedoch False zurückgegeben. Dies liegt daran, dass durch die Verkettungsoperation keine interne Zeichenfolge erstellt wird:
s3a = "strin" s3 = s3a + "g" s3 is "string"
In diesem Fall ist s3 ein neues Zeichenfolgenobjekt, das sich sowohl von s3a als auch von „string“ unterscheidet.
Das ist möglich Manuelles Internieren einer Zeichenfolge mithilfe der Funktion sys.intern():
sys.intern(s3) is "string"
Diese Codezeile zwingt Python, eine internierte Zeichenfolge mit demselben Wert zu erstellen als s3. Infolgedessen gibt der Vergleich mit „string“ „True“ zurück.
Zusammenfassend lässt sich sagen, dass die Internierung von Python-Strings auf Konstanten zur Kompilierungszeit angewendet wird. Laufzeit-String-Operationen wie die Verkettung erzeugen jedoch nicht automatisch interne Strings. Wenn Sie diese Implementierungsdetails verstehen, können Sie die Codeleistung optimieren, indem Sie die String-Internierung sorgfältig verwenden.
Das obige ist der detaillierte Inhalt vonWie wirkt sich die Python-String-Internierung auf String-Vergleiche aus und wann sollten Sie „sys.intern()' verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!