Тайны работы Python: почему числа 256 и 257 обрабатываются по-разному?
Краткое резюме
В статье объясняется, как CPython управляет памятью для целых чисел в диапазоне от -5 до 256 и почему объекты с одинаковыми значениями в этом диапазоне могут быть одним и тем же объектом. Также рассматриваются особенности работы компилятора в REPL и при запуске скриптов.
Python известен своей простотой, однако под этой простотой лежат сложные механизмы оптимизации, которые разработчики нередко обнаруживают лишь при устранении неожиданных ошибок.
В данной статье мы рассмотрим, как CPython управляет памятью для небольших целых чисел и почему был выбран диапазон от -5 до 256. Также обсудим принцип работы паттерна Flyweight на уровне ядра языка и причины, по которым идентичные строки могут обладать различными идентификаторами. Кроме того, проанализируем различия в работе компилятора в интерактивной оболочке (REPL) и при запуске скриптов.