> **Источник:** https://python-all.ru/3.1/c-api/cell.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

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

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

**`PyCellObject`**

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

**[PyTypeObject](https://python-all.ru/3.1/c-api/type.html#PyTypeObject) `PyCell_Type`**

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

**int `PyCell_Check`(ob)**

Возвращает истину, если

*ob*

является объектом ячейки;

*ob*

не должен быть равен

*NULL*

.

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyCell_New`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*ob*)**

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

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

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyCell_Get`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*cell*)**

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

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

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyCell_GET`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*cell*)**

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

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

**int `PyCell_Set`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*cell*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*value*)**

Устанавливает содержимое объекта ячейки

*cell*

в значение

*value*

. Это освобождает ссылку на любое текущее содержимое ячейки.

*value*

может быть

*NULL*

.

*cell*

должен быть не равен

*NULL*

; если это не объект ячейки, возвращается

`-1`

. В случае успеха возвращается

`0`

.

**void `PyCell_SET`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*cell*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*value*)**

Устанавливает значение объекта ячейки

*cell*

в

*value*

. Счётчики ссылок не корректируются, и проверки безопасности не выполняются;

*cell*

должен быть не равен

*NULL*

и должен быть объектом ячейки.
