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

---

# Объекты буфера pickle

Добавлено в версии 3.8.

Объект [`pickle.PickleBuffer`](https://python-all.ru/3/library/pickle.html#pickle.PickleBuffer) оборачивает [объект, предоставляющий буфер](https://python-all.ru/3/c-api/buffer.html#bufferobjects) для внеполосной передачи данных с модулем [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle).

#### `PyTypeObject PyPickleBuffer_Type`

Этот экземпляр [`PyTypeObject`](https://python-all.ru/3/c-api/type.html#c.PyTypeObject) представляет тип буфера pickle в Python. Это тот же объект, что и [`pickle.PickleBuffer`](https://python-all.ru/3/library/pickle.html#pickle.PickleBuffer) на уровне Python.

#### `int PyPickleBuffer_Check(PyObject *op)`

Возвращает true, если *op* является экземпляром буфера pickle. Эта функция всегда завершается успешно.

#### `PyObject *PyPickleBuffer_FromObject(PyObject *obj)`

Создаёт буфер pickle из объекта *obj*.

Эта функция завершится ошибкой, если *obj* не поддерживает [протокол буфера](https://python-all.ru/3/c-api/buffer.html#bufferobjects).

В случае успеха возвращает новый экземпляр буфера pickle. В случае неудачи устанавливает исключение и возвращает `NULL`.

Аналогично вызову [`pickle.PickleBuffer`](https://python-all.ru/3/library/pickle.html#pickle.PickleBuffer) с *obj* в Python.

#### `const Py_buffer *PyPickleBuffer_GetBuffer(PyObject *picklebuf)`

Получает указатель на лежащий в основе [`Py_buffer`](https://python-all.ru/3/c-api/buffer.html#c.Py_buffer), который оборачивает буфер pickle.

Возвращённый указатель действителен, пока *picklebuf* жив и не освобождён. Вызывающий не должен изменять или освобождать возвращённый [`Py_buffer`](https://python-all.ru/3/c-api/buffer.html#c.Py_buffer). Если буфер pickle был освобождён, возбуждается [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError).

В случае успеха возвращает указатель на представление буфера. В случае неудачи устанавливает исключение и возвращает `NULL`.

#### `int PyPickleBuffer_Release(PyObject *picklebuf)`

Освобождает лежащий в основе буфер, удерживаемый буфером pickle.

Возвращает `0` в случае успеха. В случае неудачи устанавливает исключение и возвращает `-1`.

Аналогично вызову [`pickle.PickleBuffer.release()`](https://python-all.ru/3/library/pickle.html#pickle.PickleBuffer.release) в Python.
