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.
Einfach ausgedrückt, vergleicht den Speicherort von beiden, während == einfach prüft, ob sie den gleichen Wert haben. Das ist alles.
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