旧缓冲协议

    这些函数是 Python 2 中“旧缓冲协议”API 的组成部分。 在 Python 3 中,此协议已不复存在,但这些函数仍然被公开以便移植 2.x 的代码。 它们被用作 新缓冲协议 的兼容性包装器,但它们并不会在缓冲被导出时向你提供对所获资源的生命周期控制。

    因此,推荐你调用 (或者配合 PyArg_ParseTuple() 函数族使用 或 w* ) 来获取一个对象的缓冲视图,并在缓冲视图可被释放时调用 PyBuffer_Release()

    int PyObject_AsCharBuffer( obj, const char buffer, Py_ssize_t **buffer_len)

    int PyObject_AsReadBuffer(PyObject obj, const void buffer, Py_ssize_t **buffer_len)

    返回一个指向包含任意数据的只读内存地址的指针。 obj 参数必须支持单段可读缓冲接口。 成功时返回 0,将 buffer 设为内存地址并将 buffer_len 设为缓冲区长度。 出错时返回 -1 并设置一个 。

    int (PyObject *o)

    Note that this function tries to get and release a buffer, and exceptions which occur while calling correspoding functions will get suppressed. To get error reporting use instead.

    int PyObject_AsWriteBuffer(PyObject obj, void buffer, Py_ssize_t **buffer_len)

    返回一个指向可写内存地址的指针。 obj 必须支持单段字符缓冲接口。 成功时返回 ,将 buffer 设为内存地址并将 buffer_len 设为缓冲区长度。 出错时返回 -1 并设置一个 。