Python-String-Interning verstehen
String-Interning ist ein Mechanismus, bei dem mehrere Strings mit demselben Inhalt dasselbe Objekt im Speicher teilen. Python verwendet String-Internierung, um die String-Verarbeitung zu optimieren und die Speichernutzung zu reduzieren.
String-Internierung zur Kompilierungszeit
Die ersten beiden Beispiele veranschaulichen die String-Internierung zur Kompilierungszeit. Beide Zeichenfolgen („string“ und „strin“ „g“) werden zur Kompilierungszeit ausgewertet und in dasselbe unveränderliche Zeichenfolgenobjekt konvertiert. Dies führt dazu, dass beide Zeichenfolgen gleichwertig sind und dieselbe Speicheradresse belegen.
Auswertung von Zeichenfolgen zur Laufzeit
Das dritte Beispiel beinhaltet jedoch eine Laufzeitverkettung von Zeichenfolgen . Im Gegensatz zur Verkettung zur Kompilierzeit wird das Ergebnis dieser Operation nicht automatisch interniert. Daher belegen „s1 „g“ und „string“ unterschiedliche Speicheradressen, was dazu führt, dass der Vergleich „s1 „g“ ist „string“ „Falsch“ zurückgibt.
Kontrolle der String-Internierung
Sie können eine Zeichenfolge manuell mit sys.intern() internieren. Dadurch stellen Sie sicher, dass das von Ihnen übergebene String-Literal dasselbe Objekt wie der vorhandene String-Wert ist, falls vorhanden.
Implementierungsdetails
Das Verhalten bei der String-Internierung hängt davon ab die spezifische Python-Implementierung. CPython (die häufigste Python-Implementierung) intern Kompilierzeitkonstanten, jedoch nicht die Ergebnisse von Laufzeitausdrücken. Diese Erklärung gilt für CPython 3.9.0 und spätere Versionen.
Hinweis: Python 3.9 gibt eine Warnung aus, wenn „is“ mit Zeichenfolgenliteralen verwendet wird, um diese auf Gleichheit zu vergleichen. Verwenden Sie zu diesem Zweck stattdessen „==".
Das obige ist der detaillierte Inhalt vonInterne Python-Zeichenfolgen zur Kompilierungszeit oder zur Laufzeit und wie wirkt sich dies auf Vergleiche aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!