舊緩沖協(xié)議?

3.0 版后已移除.

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

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

int PyObject_AsCharBuffer(PyObject *obj, const char **buffer, Py_ssize_t *buffer_len)?
Part of the Stable ABI.

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

int PyObject_AsReadBuffer(PyObject *obj, const void **buffer, Py_ssize_t *buffer_len)?
Part of the Stable ABI.

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

int PyObject_CheckReadBuffer(PyObject *o)?
Part of the Stable ABI.

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

請注意此函數(shù)會嘗試獲取并釋放一個緩沖區(qū),并且在調(diào)用對應(yīng)函數(shù)期間發(fā)生的異常會被屏蔽。 要獲取錯誤報告則應(yīng)改用 PyObject_GetBuffer()。

int PyObject_AsWriteBuffer(PyObject *obj, void **buffer, Py_ssize_t *buffer_len)?
Part of the Stable ABI.

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