舊緩沖協議?

3.0 版后已移除.

這些函數是 Python 2 中“舊緩沖協議”API 的組成部分。 在 Python 3 中,此協議已不復存在,但這些函數仍然被公開以便移植 2.x 的代碼。 它們被用作 新緩沖協議 的兼容性包裝器,但它們并不會在緩沖被導出時向你提供對所獲資源的生命周期控制。

因此,推薦你調用 PyObject_GetBuffer() (或者配合 PyArg_ParseTuple() 函數族使用 y*w* 格式碼) 來獲取一個對象的緩沖視圖,并在緩沖視圖可被釋放時調用 PyBuffer_Release()

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

返回一個可用作基于字符的輸入的只讀內存地址的指針。 obj 參數必須支持單段字符緩沖接口。 成功時返回 0,將 buffer 設為內存地址并將 buffer_len 設為緩沖區長度。 出錯時返回 -1 并設置一個 TypeError

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

返回一個指向包含任意數據的只讀內存地址的指針。 obj 參數必須支持單段可讀緩沖接口。 成功時返回 0,將 buffer 設為內存地址并將 buffer_len 設為緩沖區長度。 出錯時返回 -1 并設置一個 TypeError

int PyObject_CheckReadBuffer(PyObject?*o)?

如果 o 支持單段可讀緩沖接口則返回 1。 否則返回 0。 此函數總是會成功執行。

請注意此函數會嘗試獲取并釋放一個緩沖區,并且在調用對應函數期間發生的異常會被屏蔽。 要獲取錯誤報告則應改用 PyObject_GetBuffer()

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

返回一個指向可寫內存地址的指針。 obj 必須支持單段字符緩沖接口。 成功時返回 0,將 buffer 設為內存地址并將 buffer_len 設為緩沖區長度。 出錯時返回 -1 并設置一個 TypeError