Всю ли память сразу выделяет Python под объект?

Смотря в таблицу использования Python памяти, вижу, что на int выделяется 24 бита(64 система), когда на int в TurboPascal выделяется 8 бит. Так вот, Python при создании объекта численного типа выделяет сразу ВСЕ 24 бита или может использовать меньше, если число само по себе маленькое размером?


Ответы (1 шт):

Автор решения: Sergey Gornostaev

В Python нет примитивных типов, всё - объекты. В том числе целые числа, которые в CPython представлены в памяти структурой PyLongObject, содержащей счётчик ссылок, ссылку на объект типа, массив чисел типа uint32_t и его длину.

struct _longobject {  // С развёрнутыми макросами
    Py_ssize_t ob_refcnt;
    PyTypeObject *ob_type;
    Py_ssize_t ob_size;
    digit ob_digit[1];
};

Такая структура позволяет хранить в переменной типа int число любой размерности, если для него хватает оперативной памяти.

→ Ссылка