Warum behandelt Python "1 ist 1 ** 2" anders als "1000 ist 10 ** 3"?

Inspiriert vondiese Frage zum Zwischenspeichern kleiner Ganzzahlen und Zeichenfolgen Ich habe das folgende Verhalten entdeckt, das ich nicht verstehe.

>>> 1000 is 10**3
False

Ich dachte, ich hätte dieses Verhalten verstanden: 1000 ist zu groß, um zwischengespeichert zu werden. 1000 und 10 ** 3 zeigen auf 2 verschiedene Objekte. Aber ich hatte es falsch gemacht:

>>> 1000 is 1000
True

Vielleicht behandelt Python Berechnungen also anders als "normale" Ganzzahlen. Diese Annahme ist aber auch nicht richtig:

>>> 1 is 1**2
True

Wie lässt sich dieses Verhalten erklären?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage