Объекты-ячейки¶Cell Objects
Объекты-ячейки используются для реализации переменных, на которые ссылаются несколько областей видимости. Для каждой такой переменной создаётся объект-ячейка для хранения значения; локальные переменные каждого стекового кадра, который ссылается на значение, содержат ссылку на ячейки из внешних областей видимости, которые также используют эту переменную. При обращении к значению используется значение, хранящееся в ячейке, а не сам объект-ячейка. Такая разыменовка объекта-ячейки требует поддержки со стороны генерируемого байт-кода; они не разыменовываются автоматически при обращении. В других контекстах объекты-ячейки вряд ли окажутся полезными.
-
type PyCellObject¶
C-структура, используемая для объектов-ячеек.
-
PyTypeObject PyCell_Type¶
Объект типа, соответствующий объектам-ячейкам.
-
int PyCell_Check(PyObject *ob)¶
Возвращает true, если ob является объектом-ячейкой; ob не должен быть
NULL. Эта функция всегда выполняется успешно.
-
PyObject *PyCell_New(PyObject *ob)¶
- Возвращаемое значение: новая ссылка.
Создаёт и возвращает новый объект-ячейку, содержащий значение ob. Параметр может быть
NULL.
-
PyObject *PyCell_Get(PyObject *cell)¶
- Возвращаемое значение: новая ссылка.
Возвращает содержимое ячейки cell, которое может быть
NULL. Если cell не является объектом-ячейкой, возвращаетNULLс установленным исключением.
-
PyObject *PyCell_GET(PyObject *cell)¶
- Возвращаемое значение: заимствованная ссылка.
Возвращает содержимое ячейки cell, но без проверки того, что cell не является
NULLи является объектом-ячейкой.
-
int PyCell_Set(PyObject *cell, PyObject *value)¶
Устанавливает содержимое объекта-ячейки cell в value. При этом освобождается ссылка на текущее содержимое ячейки. value может быть
NULL. cell должен быть не-NULL.В случае успеха возвращает
0. Если cell не является объектом-ячейкой, устанавливает исключение и возвращает-1.