舊緩沖協(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
。