objbuffer.md
1> **Источник:** https://python-all.ru/2.6/c-api/objbuffer.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Старый буферный протокол89В этом разделе описывается устаревший буферный протокол, который был введён в Python 1.6. Он всё ещё поддерживается, но считается устаревшим в серии Python 2.x. В Python 3.0 введён новый буферный протокол, устраняющий недостатки и слабые места старого протокола; этот новый протокол был портирован обратно в Python 2.6. См. [*Буферные объекты*](https://python-all.ru/2.6/c-api/buffer.html#bufferobjects) для получения дополнительной информации.1011**int `PyObject_AsCharBuffer`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*obj*, const char *\*\*buffer*, Py\_ssize\_t *\*buffer\_len*)**1213Возвращает указатель на область памяти, доступную только для чтения, пригодную для ввода на основе символов. Аргумент *obj* должен поддерживать интерфейс односегментного символьного буфера. При успехе возвращает `0`, устанавливает *buffer* на область памяти и *buffer\_len* – длину буфера. При ошибке возвращает `-1` и устанавливает [`TypeError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.TypeError).1415Новое в версии 1.6.1617Изменено в версии 2.5: Эта функция использовала тип `int *` для *buffer\_len*. Это может потребовать изменений в коде для корректной поддержки 64-битных систем.1819**int `PyObject_AsReadBuffer`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*obj*, const void *\*\*buffer*, Py\_ssize\_t *\*buffer\_len*)**2021Возвращает указатель на область памяти только для чтения, содержащую произвольные данные. Аргумент *obj* должен поддерживать интерфейс односегментного читаемого буфера. При успехе возвращает `0`, устанавливает *buffer* на область памяти и *buffer\_len* – длину буфера. При ошибке возвращает `-1` и устанавливает [`TypeError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.TypeError).2223Новое в версии 1.6.2425Изменено в версии 2.5: Эта функция использовала тип `int *` для *buffer\_len*. Это может потребовать изменений в коде для корректной поддержки 64-битных систем.2627**int `PyObject_CheckReadBuffer`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**2829Возвращает `1`, если *o* поддерживает интерфейс односегментного читаемого буфера. В противном случае возвращает `0`.3031Новое в версии 2.2.3233**int `PyObject_AsWriteBuffer`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*obj*, void *\*\*buffer*, Py\_ssize\_t *\*buffer\_len*)**3435Возвращает указатель на область памяти, доступную для записи. Аргумент *obj* должен поддерживать интерфейс односегментного символьного буфера. В случае успеха возвращает `0`, устанавливает *buffer* на адрес памяти, а *buffer\_len* – на длину буфера. При ошибке возвращает `-1` и устанавливает [`TypeError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.TypeError).3637Новое в версии 1.6.3839Изменено в версии 2.5: Эта функция использовала тип `int *` для *buffer\_len*. Это может потребовать изменений в коде для корректной поддержки 64-битных систем.40