Старый буферный протокол¶Old Buffer Protocol
В этом разделе описывается устаревший буферный протокол, который был введён в Python 1.6. Он всё ещё поддерживается, но считается устаревшим в серии Python 2.x. Python 3 вводит новый буферный протокол, который устраняет недостатки и слабости прежнего протокола и был портирован обратно в Python 2.6. См. Буферы и объекты Memoryview для получения дополнительной информации.
-
int
PyObject_AsCharBuffer(PyObject *obj, const char **buffer, Py_ssize_t *buffer_len)¶ Возвращает указатель на область памяти только для чтения, пригодную для ввода на основе символов. Аргумент obj должен поддерживать интерфейс односегментного символьного буфера. При успехе возвращает
0, устанавливает buffer на эту область памяти, а buffer_len – на длину буфера. В случае ошибки возвращает-1и устанавливаетTypeError.Новое в версии 1.6.
Изменено в версии 2.5: Эта функция использовала тип
int *для buffer_len. Возможно, потребуется внести изменения в код для правильной поддержки 64-битных систем.
-
int
PyObject_AsReadBuffer(PyObject *obj, const void **buffer, Py_ssize_t *buffer_len)¶ Возвращает указатель на область памяти только для чтения, содержащую произвольные данные. Аргумент obj должен поддерживать интерфейс односегментного читаемого буфера. При успехе возвращает
0, устанавливает buffer на эту область памяти, а buffer_len – на длину буфера. В случае ошибки возвращает-1и устанавливаетTypeError.Новое в версии 1.6.
Изменено в версии 2.5: Эта функция использовала тип
int *для buffer_len. Возможно, потребуется внести изменения в код для правильной поддержки 64-битных систем.
-
int
PyObject_CheckReadBuffer(PyObject *o)¶ Возвращает
1, если o поддерживает интерфейс односегментного читаемого буфера. В противном случае возвращает0.Новое в версии 2.2.
-
int
PyObject_AsWriteBuffer(PyObject *obj, void **buffer, Py_ssize_t *buffer_len)¶ Возвращает указатель на доступную для записи область памяти. Аргумент obj должен поддерживать односегментный символьный буферный интерфейс. В случае успеха возвращает
0, устанавливает buffer на адрес памяти, а buffer_len – на длину буфера. В случае ошибки возвращает-1и устанавливаетTypeError.Новое в версии 1.6.
Изменено в версии 2.5: Эта функция использовала тип
int *для buffer_len. Возможно, потребуется внести изменения в код для правильной поддержки 64-битных систем.