Differenzanalyse der Operatoren „==' und „is' in Python
Nov 07, 2016 am 10:38 AMVorwort
Bevor Sie über den Unterschied zwischen den beiden Operatoren is und == sprechen, müssen Sie zunächst die drei Grundelemente kennen, die in Objekten in Python enthalten sind, nämlich: id (Identitätsidentifikation), Python-Typ() (Datentyp) und Wert (Wert). Sowohl is als auch == werden zum Vergleichen und Beurteilen von Objekten verwendet, der Inhalt des Objektvergleichs und der Objektbeurteilung ist jedoch unterschiedlich. Werfen wir einen Blick auf die spezifischen Unterschiede.
Es gibt zwei Methoden, um in Python zu vergleichen, ob zwei Objekte gleich sind. Einfach ausgedrückt sind ihre Unterschiede wie folgt:
ist zu vergleichen, ob zwei Referenzen auf dasselbe Objekt verweisen (Referenzvergleich). ).
== dient zum Vergleich, ob zwei Objekte gleich sind.
1 2 3 4 5 6 7 8 9 10 11 |
|
Implementierungsprinzip
vergleicht, ob die beiden das gleiche Objekt sind. Was also verglichen wird, ist die Speicheradresse (ob das id gleich).
== ist ein Wertevergleich. Unveränderliche Objekte wie int, str vergleichen Werte direkt. Für Objekte, die Python bekannt sind, wird deren Funktion __eq__ zum Vergleich aufgerufen. (Tatsächlich sollten bekannte Objekte auch über die integrierte Funktion __eq__ verglichen werden.) Wenn bei benutzerdefinierten Objekten die Funktion __eq__ implementiert ist, wird sie verglichen. Wenn sie nicht implementiert ist, ist der Effekt derselbe wie bei ==.
Objekt-Caching-Mechanismus
Python speichert kleinere Objekte, wenn sie das nächste Mal verwendet werden, im Cache-Bereich wird nicht Neuer Speicher wird geöffnet, aber der Adresse des kleinen Objekts wird weiterhin ein neuer Wert zugewiesen. Beispiel:
1 2 3 4 5 6 7 8 9 |
|
Die Zuordnung wird berechnet und nutzt nicht den Pufferbereich. Dies ist aus dem ersten Codebeispiel ersichtlich.
Für Strings können Sie die Verwendung eines Puffers erzwingen, indem Sie die Funktion intern verwenden.

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

So laden Sie Deepseek Xiaomi herunter

Was sind die Vor- und Nachteile des Templatings?

Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an

Für nur 250 US-Dollar zeigt Ihnen der technische Leiter von Hugging Face Schritt für Schritt, wie Sie Llama 3 verfeinern

Eine vollständige Anleitung zum Debuggen und Analysieren von Golang-Funktionen

Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks
