Unterschied zwischen == und ist in Python

Es gibt zwei Möglichkeiten, um festzustellen, ob sie in Python identisch sind. == und ist. Die Rückgabewerte sind alle boolesch, aber was ist der Unterschied? Darauf bin ich neugierig.

Fazit

Einfach ausgedrückt, vergleicht den Speicherort von beiden, während == einfach prüft, ob sie den gleichen Wert haben. Das ist alles.

Zum Beispiel?

Werfen wir einen Blick auf den Code (starten Sie python3 im Terminal)

>>> a = [1, 2, 3]
>>> b = a
>>> b is a 
True
>>> b == a
True
>>> b = a[:]
>>> b is a
False
>>> b == a
True

Ich werde erklären. Wenn Sie a und a auch b eine Liste zuweisen, können Sie sehen, dass sie aus demselben Speicherort zitieren. Daher ist dies wahr mit ist. Verwenden Sie dann die Zeichenfolgenoperation [:], um die Liste zu duplizieren. Dann wird die Kopie fertiggestellt und es wird im Speicher anders sein. Daher ist dies falsch. darüber.

Wenn Sie sich tatsächlich die ID ansehen

>>> id(a)
4364243328
>>> 
>>> id(b)
4364202696

Korrekt. Da es falsch ist, ist es natürlich, dass die ID anders ist.

Es gibt jedoch Ausnahmen wie den folgenden Code.

>>> a = 256
>>> b = 256
>>> a is b
True
>>> a == b
True
>>>
>>> a = 1000
>>> b = 10**3
>>> a == b
True
>>> a is b
False

Was bedeutet das? Obwohl a und b getrennt nummeriert sind, unterscheiden sich die Ergebnisse zwischen oben und unten. Nun werde ich erklären. Python führt verschiedene Aktionen für kleine Ganzzahlen wie 256 aus, um die Leistung zu verbessern. Es scheint, dass solche speziellen Ganzzahlen am selben Ort mit derselben ID gespeichert sind. In 256 ist es dann dasselbe True, unabhängig davon, ob Sie is oder == verwenden, und nicht für große Zahlen wie 1000.

Es war das. Was denken Sie. Wenn Sie Vorschläge haben, tun Sie dies bitte.

Wir sehen uns wieder

Recommended Posts

Unterschied zwischen == und ist in Python
Über den Unterschied zwischen "==" und "is" in Python
Unterschied zwischen list () und [] in Python
Unterschied zwischen Anweisungen (Anweisungen) und Ausdrücken (Ausdrücken) in Python
Unterschied zwischen @classmethod und @staticmethod in Python
Unterschied zwischen Anhängen und + = in der Python-Liste
Unterschied zwischen nicht lokal und global in Python
Unterschied zwischen Variablen und Selbst. Variablen in der [Python] -Klasse
Unterschied zwischen Ruby und Python Split
Unterschied zwischen Java und Python (Memo)
Unterschied zwischen Ruby und Python in Bezug auf Variablen
Unterschied zwischen der Python2-Serie und der Python3-Serie dict.keys ()
Unterschied zwischen return, return None und no return description in Python
[Python] Unterschied zwischen Funktion und Methode
Python - Unterschied zwischen exec und eval
[Python] Unterschied zwischen randrange () und randint ()
[Python] Unterschied zwischen sortiert und sortiert (Colaboratory)
Python-Modul num2words Verhaltensunterschied zwischen Englisch und Russisch
Listenverkettungsmethode in Python, Unterschied zwischen list.extend () und dem Operator "+"
Unterschied in der Authentizität zwischen Python und JavaScript
Unterschiede zwischen Ruby und Python im Umfang
Unterschiede zwischen Python- und Java-Syntax
Unterschiede in der Beziehung zwischen PHP und Python schließlich und beenden
[Python] Unterschied zwischen Klassenmethode und statischer Methode
[Python Iroha] Unterschied zwischen Liste und Tupel
[Python] Unterschied zwischen Rand- und Randn-Ausgabe
Unterschiede in der Multithread-Verarbeitung zwischen Python und Jython
Verwendung ist und == in Python
Funktion zum Öffnen einer Datei in Python3 (Unterschied zwischen open und codecs.open und Geschwindigkeitsvergleich)
Was ist der Unterschied zwischen "pip" und "conda"?
Was ist "funktionale Programmierung" und "objektorientiert"? Python Edition
Die Antwort von "1/2" unterscheidet sich zwischen Python2 und 3
Was ist der Unterschied zwischen Unix und Linux?
[Einführung in Python] Was ist der Unterschied zwischen einer Liste und einem Taple?
Unterschied zwischen Prozess und Job
Unterschied zwischen "categoryical_crossentropy" und "sparse_categorical_crossentropy"
Finde Fehler in Python
Unterschied zwischen Regression und Klassifikation
[Python] Python und Sicherheit - is Was ist Python?
Stapel und Warteschlange in Python
Unterschied zwischen np.array und np.arange
Unterschied zwischen MicroPython und CPython
Unittest und CI in Python
Identität und Äquivalenz: ist und == in Python
Unterschied zwischen ps a und ps -a
Unterschied zwischen Return und Print-Python
Was ist der Unterschied zwischen usleep, nanosleep und clock_nanosleep?
Das Einrückungsverhalten von json.dumps unterscheidet sich zwischen python2 und python3
[Python] Berechnung der Differenz von Datum und Zeit in Monaten und Jahren
Gegenseitige Konvertierung zwischen JSON und YAML / TOML in Python
Vergleiche "log and infininity" mit Gauche (0.9.4) und Python (3.5.1)
Unterschiede beim Schreiben von externem Quellcode zwischen Ruby und Python
Was ist der Unterschied zwischen symbolischen und harten Links?
Pakete, die MIDI mit Python Midi und Pretty_Midi verarbeiten
Unterschied zwischen SQLAlchemy filter () und filter_by ()
Zeigen Sie Fotos in Python und HTML an
Verwenden Sie Stoff wie in Python (Stoff3)
Sortieralgorithmus und Implementierung in Python
Python> Unterschied zwischen Inpbt- und Print-Ausgabe (Inpbt)> [1. 2. 3.] / Array ([1., 2., 3.], dtype = float32)