Почему Python обрабатывает «1 - 1 ** 2» в отличие от «1000 - 10 ** 3»?

Вдохновленныйэтот Вопрос о кешировании небольших целых чисел и строк Я обнаружил следующее поведение, которое я не понимаю.

>>> 1000 is 10**3
False

Мне показалось, что я понял это поведение: 1000 должно быть слишком большим для кэширования. 1000 и 10 ** 3 указывают на 2 разных объекта. Но я ошибся

>>> 1000 is 1000
True

Поэтому, возможно, Python трактует вычисления не так, как «нормальные» целые числа. Но это предположение также неверно:

>>> 1 is 1**2
True

Как это поведение можно объяснить?

Ответы на вопрос(1)

Ваш ответ на вопрос