旧缓冲协议¶
自版本 3.0 起已弃用。
这些函数是 Python 2 中“旧缓冲协议”API 的一部分。在 Python 3 中,此协议不再存在,但这些函数仍然公开以方便移植 2.x 代码。它们充当 新缓冲协议 的兼容性包装器,但它们不会让你控制导出缓冲区时获取的资源的生命周期。
因此,建议你调用 PyObject_GetBuffer()
(或 y*
或 w*
格式代码 与 PyArg_ParseTuple()
函数族一起使用)来获取对象的缓冲区视图,并在可以释放缓冲区视图时调用 PyBuffer_Release()
。
-
int PyObject_AsCharBuffer(PyObject *obj, const char **buffer, Py_ssize_t *buffer_len)¶
- 是 稳定 ABI 的一部分。
返回一个指向可作为基于字符的输入使用的只读内存位置的指针。obj 参数必须支持单段字符缓冲区接口。成功时,返回
0
,将 buffer 设置为内存位置,将 buffer_len 设置为缓冲区长度。如果出错,则返回-1
并设置TypeError
。
-
int PyObject_AsReadBuffer(PyObject *obj, const void **buffer, Py_ssize_t *buffer_len)¶
- 是 稳定 ABI 的一部分。
返回一个指向包含任意数据的只读内存位置的指针。obj 参数必须支持单段可读缓冲区接口。成功时,返回
0
,将 buffer 设置为内存位置,将 buffer_len 设置为缓冲区长度。如果出错,则返回-1
并设置TypeError
。
-
int PyObject_CheckReadBuffer(PyObject *o)¶
- 是 稳定 ABI 的一部分。
如果 o 支持单段可读缓冲区接口,则返回
1
。否则返回0
。此函数始终成功。请注意,此函数尝试获取和释放缓冲区,调用相应函数时发生的异常将被抑制。要获取错误报告,请使用
PyObject_GetBuffer()
代替。
-
int PyObject_AsWriteBuffer(PyObject *obj, void **buffer, Py_ssize_t *buffer_len)¶
- 是 稳定 ABI 的一部分。
返回指向可写内存位置的指针。obj 参数必须支持单段字符缓冲区接口。成功时,返回
0
,将 buffer 设置为内存位置,并将 buffer_len 设置为缓冲区长度。如果出错,则返回-1
并设置一个TypeError
。