Объекты ячейки

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

PyTypeObject PyCell_Type

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

int PyCell_Check(ob)

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

PyObject* PyCell_New(PyObject *ob)
Return value: New reference.

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

PyObject* PyCell_Get(PyObject *cell)
Return value: New reference.

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

PyObject* PyCell_GET(PyObject *cell)
Return value: Borrowed reference.

Возвращает содержимое ячейки 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 и являться объектом ячейки.