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

---

# Протокол буфера

**\[PyObject\_AsCharBuffer\]int `PyObject_AsCharBuffer`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*obj*, const char *\*\*buffer*, Py\_ssize\_t *\*buffer\_len*)**

Возвращает указатель на область памяти только для чтения, пригодную для ввода на основе символов. Аргумент

*obj*

должен поддерживать односегментный символьный буферный интерфейс. В случае успеха возвращает

`0`

, устанавливает

*buffer*

на адрес памяти и

*buffer\_len*

на длину буфера. В случае ошибки возвращает

`-1`

и устанавливает

[`TypeError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.TypeError)

.

**\[PyObject\_AsReadBuffer\]int `PyObject_AsReadBuffer`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*obj*, const void *\*\*buffer*, Py\_ssize\_t *\*buffer\_len*)**

Возвращает указатель на область памяти только для чтения, содержащую произвольные данные. Аргумент

*obj*

должен поддерживать односегментный читаемый буферный интерфейс. В случае успеха возвращает

`0`

, устанавливает

*buffer*

на адрес памяти и

*buffer\_len*

на длину буфера. В случае ошибки возвращает

`-1`

и устанавливает

[`TypeError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.TypeError)

.

**\[PyObject\_CheckReadBuffer\]int `PyObject_CheckReadBuffer`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*o*)**

Возвращает

`1`

, если

*o*

поддерживает интерфейс односегментного читаемого буфера. В противном случае возвращает

`0`

.

**\[PyObject\_AsWriteBuffer\]int `PyObject_AsWriteBuffer`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*obj*, void *\*\*buffer*, Py\_ssize\_t *\*buffer\_len*)**

Возвращает указатель на область памяти для записи. Аргумент

*obj*

должен поддерживать односегментный символьный буферный интерфейс. В случае успеха возвращает

`0`

, устанавливает

*buffer*

на адрес памяти и

*buffer\_len*

на длину буфера. В случае ошибки возвращает

`-1`

и устанавливает

[`TypeError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.TypeError)

.
