Всю ли память сразу выделяет 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 число любой размерности, если для него хватает оперативной памяти.