7 Повторное использование примитивных объектов

Интересная вещь, которая может помочь оптимизировать ваши приложения, заключается в том, что примитивы на самом деле также пересчитываются под капотом. Давайте посмотрим на цифры; для всех целых чисел от -5 до 256 Python всегда использует один и тот же объект:

 >>> import sys
>>> sys.getrefcount(1)
797
>>> a = 1
>>> b = 1
>>> sys.getrefcount(1)
799

 

Обратите внимание , что RefCount возрастает, а это означает , что и a b ссылаться на тот же объект , лежащим в основе , когда они относятся к 1 примитиву. Однако для больших чисел Python фактически не использует базовый объект:

 >>> a = 999999999
>>> sys.getrefcount(999999999)
3
>>> b = 999999999
>>> sys.getrefcount(999999999)
3

 

Поскольку RefCount для 999999999 не изменяется при назначении его a и b мы можем сделать вывод , что они относятся к двум различным базовым объектам, несмотря на то, что они оба назначены тому же примитивно.