舊緩衝協議

自版本 3.0 起已棄用。

這些函式是 Python 2 中“舊緩衝協議”API 的一部分。在 Python 3 中,此協議不再存在,但這些函式仍然公開以方便移植 2.x 程式碼。它們充當 新緩衝協議 的相容性包裝器,但它們不會讓你控制匯出緩衝區時獲取的資源的生命週期。

因此,建議你呼叫 PyObject_GetBuffer()(或 y*w* 格式程式碼PyArg_ParseTuple() 函式族一起使用)來獲取物件的緩衝區檢視,並在可以釋放緩衝區檢視時呼叫 PyBuffer_Release()

int PyObject_AsCharBuffer(PyObject *obj, const char **buffer, Py_ssize_t *buffer_len)
穩定 ABI 的一部分。

返回一個指向可作為基於字元的輸入使用的只讀記憶體位置的指標。obj 引數必須支援單段字元緩衝區介面。成功時,返回 0,將 buffer 設定為記憶體位置,將 buffer_len 設定為緩衝區長度。如果出錯,則返回 -1 並設定 TypeError

int PyObject_AsReadBuffer(PyObject *obj, const void **buffer, Py_ssize_t *buffer_len)
穩定 ABI 的一部分。

返回一個指向包含任意資料的只讀記憶體位置的指標。obj 引數必須支援單段可讀緩衝區介面。成功時,返回 0,將 buffer 設定為記憶體位置,將 buffer_len 設定為緩衝區長度。如果出錯,則返回 -1 並設定 TypeError

int PyObject_CheckReadBuffer(PyObject *o)
穩定 ABI 的一部分。

如果 o 支援單段可讀緩衝區介面,則返回 1。否則返回 0。此函式始終成功。

請注意,此函式嘗試獲取和釋放緩衝區,呼叫相應函式時發生的異常將被抑制。要獲取錯誤報告,請使用 PyObject_GetBuffer() 代替。

int PyObject_AsWriteBuffer(PyObject *obj, void **buffer, Py_ssize_t *buffer_len)
穩定 ABI 的一部分。

返回指向可寫記憶體位置的指標。obj 引數必須支援單段字元緩衝區介面。成功時,返回 0,將 buffer 設定為記憶體位置,並將 buffer_len 設定為緩衝區長度。如果出錯,則返回 -1 並設定一個 TypeError