MemoryView 對(duì)象?

一個(gè) memoryview 對(duì)象C級(jí)別的 緩沖區(qū)接口 暴露為一個(gè)可以像任何其他對(duì)象一樣傳遞的 Python 對(duì)象。

PyObject *PyMemoryView_FromObject(PyObject *obj)?
Return value: New reference. Part of the Stable ABI.

從提供緩沖區(qū)接口的對(duì)象創(chuàng)建 memoryview 對(duì)象。 如果 obj 支持可寫緩沖區(qū)導(dǎo)出,則 memoryview 對(duì)象將可以被讀/寫,否則它可能是只讀的,也可以是導(dǎo)出器自行決定的讀/寫。

PyObject *PyMemoryView_FromMemory(char *mem, Py_ssize_t size, int flags)?
Return value: New reference. Part of the Stable ABI since version 3.7.

使用 mem 作為底層緩沖區(qū)創(chuàng)建一個(gè) memoryview 對(duì)象。 flags 可以是 PyBUF_READ 或者 PyBUF_WRITE 之一.

3.3 新版功能.

PyObject *PyMemoryView_FromBuffer(const Py_buffer *view)?
Return value: New reference. Part of the Stable ABI since version 3.11.

創(chuàng)建一個(gè)包含給定緩沖區(qū)結(jié)構(gòu) view 的 memoryview 對(duì)象。 對(duì)于簡單的字節(jié)緩沖區(qū),PyMemoryView_FromMemory() 是首選函數(shù)。

PyObject *PyMemoryView_GetContiguous(PyObject *obj, int buffertype, char order)?
Return value: New reference. Part of the Stable ABI.

從定義緩沖區(qū)接口的對(duì)象創(chuàng)建一個(gè) memoryview 對(duì)象 contiguous 內(nèi)存塊(在 'C' 或 'F'ortran order 中)。 如果內(nèi)存是連續(xù)的,則 memoryview 對(duì)象指向原始內(nèi)存。 否則,復(fù)制并且 memoryview 指向新的 bytes 對(duì)象。

int PyMemoryView_Check(PyObject *obj)?

如果 obj 是一個(gè) memoryview 對(duì)象則返回真值。 目前不允許創(chuàng)建 memoryview 的子類。 此函數(shù)總是會(huì)成功執(zhí)行。

Py_buffer *PyMemoryView_GET_BUFFER(PyObject *mview)?

返回指向 memoryview 的導(dǎo)出緩沖區(qū)私有副本的指針。 mview 必須 是一個(gè) memoryview 實(shí)例;這個(gè)宏不檢查它的類型,你必須自己檢查,否則你將面臨崩潰風(fēng)險(xiǎn)。

Py_buffer *PyMemoryView_GET_BASE(PyObject *mview)?

返回 memoryview 所基于的導(dǎo)出對(duì)象的指針,或者如果 memoryview 已由函數(shù) PyMemoryView_FromMemory()PyMemoryView_FromBuffer() 創(chuàng)建則返回 NULL。 mview 必須 是一個(gè) memoryview 實(shí)例。