Сохраняет ли список python объект или ссылку на объект?
Размер целых 24 байта и размер char составляет 38 байт,, но когда я вставляю в список, размер списка не отражают точный размер объекта, который я вставляю. Итак, теперь я блуждающий список держит ссылку на объект, и объект хранится где-то в памяти.
>>> sys.getsizeof(1)
24
>>> sys.getsizeof('a')
38
>>> sys.getsizeof([])
72
>>> sys.getsizeof([1])
80
>>> sys.getsizeof(['a'])
80
>>> sys.getsizeof('james')
42
>>>
Ответы
Ответ 1
Все значения в Python вставляются в бокс, они не сопоставляются с типами или размерами машин. А именно, все в реализации CPython - это PyObject
struct.
http://docs.python.org/2/c-api/structures.html#PyObject
Итак, теперь я бродячий список держит ссылку на объект, и объект хранится где-то в памяти.
Список также представляет собой PyObject, содержащий ссылки sequence ссылок на другие элементы PyObject для элементов списка. Список выделен на кучу Python, который управляется сборщиком мусора Python.
Ответ 2
Все в python хранится как ссылка. Итак, ваше предположение верно.
>>> id(1)
10274744
>>> a = [1]
>>> id(a)
11037512
>>> id(a[0])
10274744
>>> sys.getsizeof(1)
24
>>> sys.getsizeof(a)
80
Вы видите, что a [0] указывает на id/адрес 1. Это показывает, что в списке сохраняется только ссылка на объект.