Почему 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
Как это поведение можно объяснить?