舊緩沖協(xié)議?

3.0 版后已移除.

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

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

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

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

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

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

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

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

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

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

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