... damit hast du wohl recht.
Ich (und ich glaube, dass ich nicht damit alleine war/bin) habe erwartet, dass ein erzeugtes Objekt int(5) und weiteres int(5) zwei unterschiedliche Objekte letztendlich auch sind.
Kennt man jedoch dieses "Feature" und die C-Implementierung des
Integers in Python, so wirkt es dann nicht mehr so ganz irritierend ... schön oder beruhigender ist es damit in meinen Augen jedoch weiterhin nicht

.
Integer haben in der Python Object Implementierung ein Feature welches erlaubt, SmallInteger (diese können unterschiedlich definiert sein .. 0-100, 5-257, .. hab ein wenig die C Sourcecodes verschiedener Builds durchstöbert und verschiedene gefunden) zu cashen und zu teilen.
Um genauer zu sein, werden die "Referrenzen" dessen Wert innerhalb der "relativ" kleinen Range liegt, in einem Array gespeichert.
Vorteil ... tjoa ... Zahlen von z.B. 0-100 nutzt man direkt und noch stärker indirekt häufiger als man denkt. Vermutlich dient es entsprechend der Performance- und Speicheroptimierung.
Gängige Rechnungen, Iterationen, Listen-Aufbauten, etc. pp. ... diese Werte durchrauschen Python-Scripte/Programme mit großer Wahrscheinlichkeit am laufennden Band wie PKWs die Hauptstrassen einer Großstadt zur RushHour

.
Das auf unseren Systemen diese "Range" unterschiedlich definiert ist, wird an der Weiterentwicklung und an der Justierung auf die unterschiedlichen Hardware- und Betriebssystemumgebungen liegen, auf denen ja die darauf hin optimiert kompilierten Python Interpreter laufen.
Nachteil ... wie wir schon festgestellt haben ... wenn natürlich aber dann auf der anderen Seite zwei oder mehrere Integer PyObjekte verschiedenen Variablen-Namens jedoch auf auf ein und denselben Bereich zeigen, weil sie wie es so schön heisst "geshared" werden ... dann erklärt es auch das "True" Ergebnis auf den Vergleich der Objekt Identität.
Dann ist
während das gleiche Spiel mit einem weit aus höheren Wert wie z.B. 500 "False" ergeben würde.
>>Masaru<<