Вдохновленный этим вопросом о кешировании небольших целых чисел и строк, я обнаружил следующее поведение, которое я не понимаю.
>>> 1000 is 10**3
False
Я думал, что понял это поведение: 1000 - это большой, чтобы быть кешированным. 1000 и 10 ** 3 точки на 2 разных объекта. Но у меня было это неправильно:
>>> 1000 is 1000
True
Итак, возможно, Python рассматривает вычисления иначе, чем "нормальные" целые числа. Но это предположение также неверно:
>>> 1 is 1**2
True
Как объяснить это поведение?