Heim > Backend-Entwicklung > Python-Tutorial > Interne Python-Zeichenfolgen zur Kompilierungszeit oder zur Laufzeit und wie wirkt sich dies auf Vergleiche aus?

Interne Python-Zeichenfolgen zur Kompilierungszeit oder zur Laufzeit und wie wirkt sich dies auf Vergleiche aus?

Linda Hamilton
Freigeben: 2024-12-14 02:03:10
Original
671 Leute haben es durchsucht

Does Python Intern Strings at Compile Time or Run Time, and How Does This Affect Comparisons?

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage