[#] [Из песочницы] Внутреннее устройство Python list
habrabot(difrex,1) — All
2015-12-14 17:00:02


_Предлагаю вашему вниманию перевод [публикации][1] Laurent Luce о реализации работы со списками в CPython. Она может быть полезна начинающим программистам на Python, либо готовящимся к собеседованию._ Эта статья описывает реализацию объекта списка в CPython, наиболее популярной реализации Python. Списки в Python — это мощный инструмент, и интересно узнать, как они устроены внутри. Взгляните на простой скрипт, который добавляет несколько целых значений в список и выводит их:

>>> l = []
>>> l.append(1)
>>> l.append(2)
>>> l.append(3)
>>> l
[1, 2, 3]
>>> for e in l:
... print e
...
1
2
3


Как вы можете видеть, список является итерируемым объектом.

##### C-структура объекта списка

Объект списка в CPython представлен нижеследующей структурой в C. ob\_item — это список указателей на элементы списка, allocated — количество выделенной памяти.

typedef struct {
PyObject_VAR_HEAD
PyObject **ob_item;
Py_ssize_t allocated;
} PyListObject;


[Читать дальше →][2]

[1]: http://www.laurentluce.com/posts/python-list-implementation/
[2]: http://habrahabr.ru/post/273045/#habracut