Heim Backend-Entwicklung Python-Tutorial Differenzanalyse der Operatoren „==' und „is' in Python

Differenzanalyse der Operatoren „==' und „is' in Python

Nov 07, 2016 am 10:38 AM

Vorwort

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

>>> a = [1, 2, 3]

>>> b = a

>>> b is a # a的引用复制给b,他们在内存中其实是指向了用一个对象

True

>>> b == a # 当然,他们的值也是相等的

True

>>> b = a[:] # b通过a切片获得a的部分,这里的切片操作重新分配了对象,

>>> b is a # 所以指向的不是同一个对象了

False

>>> b == a # 但他们的值还是相等的

True

Nach dem Login kopieren

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

>>> c = 1

>>> d = 1

>>> print(c is d)

True

   

>>> 1000 is 10**3

False

>>> 1000 == 10**3

True

Nach dem Login kopieren

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.

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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So laden Sie Deepseek Xiaomi herunter So laden Sie Deepseek Xiaomi herunter Feb 19, 2025 pm 05:27 PM

So laden Sie Deepseek Xiaomi herunter

Was sind die Vor- und Nachteile des Templatings? Was sind die Vor- und Nachteile des Templatings? May 08, 2024 pm 03:51 PM

Was sind die Vor- und Nachteile des Templatings?

Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an Jul 01, 2024 am 07:22 AM

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 Für nur 250 US-Dollar zeigt Ihnen der technische Leiter von Hugging Face Schritt für Schritt, wie Sie Llama 3 verfeinern May 06, 2024 pm 03:52 PM

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 Eine vollständige Anleitung zum Debuggen und Analysieren von Golang-Funktionen May 06, 2024 pm 02:00 PM

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

Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks May 06, 2024 pm 04:43 PM

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

Wie fragst du ihn Deepseek? Wie fragst du ihn Deepseek? Feb 19, 2025 pm 04:42 PM

Wie fragst du ihn Deepseek?

Welche Software ist NET40? Welche Software ist NET40? May 10, 2024 am 01:12 AM

Welche Software ist NET40?

See all articles