Документация Python неофициальный перевод

Объекты-ячейкиCell Objects

Объекты «Cell» используются для реализации переменных, на которые ссылаются несколько областей видимости. Для каждой такой переменной создаётся объект ячейки, хранящий значение; локальные переменные каждого стекового кадра, ссылающегося на значение, содержат ссылку на ячейки из внешних областей видимости, которые также используют эту переменную. При обращении к значению используется значение, хранящееся в ячейке, а не сам объект ячейки. Такое разыменование объекта ячейки требует поддержки со стороны генерируемого байт-кода; они не разыменовываются автоматически при обращении. Скорее всего, объекты ячеек не пригодятся где-либо ещё.

PyCellObject

C-структура, используемая для объектов-ячеек.

PyTypeObject PyCell_Type

Объект типа, соответствующий объектам-ячейкам.

int PyCell_Check(ob)

Возвращает true, если ob является объектом-ячейкой; ob не должен быть NULL.

PyObject* PyCell_New(PyObject *ob)
Возвращаемое значение: новая ссылка.

Создаёт и возвращает новый объект-ячейку, содержащий значение ob. Параметр может быть NULL.

PyObject* PyCell_Get(PyObject *cell)
Возвращаемое значение: новая ссылка.

Возвращает содержимое ячейки cell.

PyObject* PyCell_GET(PyObject *cell)
Возвращаемое значение: заимствованная ссылка.

Возвращает содержимое ячейки cell, но без проверки того, что cell не является NULL и является объектом-ячейкой.

int PyCell_Set(PyObject *cell, PyObject *value)

Устанавливает содержимое объекта-ячейки cell в value. Это освобождает ссылку на предыдущее содержимое ячейки. value может быть NULL. cell не должен быть NULL; если это не объект-ячейка, возвращается -1. В случае успеха возвращается 0.

void PyCell_SET(PyObject *cell, PyObject *value)

Устанавливает значение объекта-ячейки cell в value. Счётчики ссылок не корректируются, проверки безопасности не выполняются; cell должен быть не-NULL и должен быть объектом-ячейкой.