Collection Vergleich ist reflexiv, aber nicht kurzschließen. Warum

In Python vergleichen die eingebauten Sammlungen Elemente mit der expliziten Annahme, dass sie reflexiv sind:

Um die Reflexivität von Elementen zu erzwingen,der Vergleich von Sammlungen nimmt an, dass für ein Sammlungselement x x == x immer wahr ist. Basierend auf dieser Annahme wird die Elementidentität zuerst verglichen und der Elementvergleich wird nur für bestimmte Elemente durchgeführt.

Logisch bedeutet dies, dass für jede ListeL, L == L muss seinTrue. Warum überprüft die Implementierung vor diesem Hintergrund nicht die Identität, um die Auswertung kurzzuschließen?

In [1]: x = list(range(10000000))
In [2]: y = list(range(int(len(x)) // 10))
In [3]: z = [1]

# evaluation time likes O(N)
In [4]: %timeit x == x
10 loops, best of 3: 21.8 ms per loop
In [5]: %timeit y == y
100 loops, best of 3: 2.2 ms per loop
In [6]: %timeit z == z
10000000 loops, best of 3: 36.4 ns per loop

Es ist klar, dass untergeordnete Klassen eine Identitätsprüfung durchführen können, und eine Identitätsprüfung würde jedem solchen Vergleich einen sehr geringen Aufwand hinzufügen.

Wurde eine historische Entscheidung explizit getroffennich eine solche Prüfung in den eingebauten Sequenzen zu machen, um diesen Aufwand zu vermeiden?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage