MemoryView 对象 — Python 文档

来自菜鸟教程
Python/docs/3.7/c-api/memoryview
跳转至:导航、​搜索

内存视图对象

memoryview 对象将 C 级别 缓冲区接口 作为 Python 对象公开,然后可以像任何其他对象一样传递它。

PyObject *PyMemoryView_FromObject(PyObject *obj)
从提供缓冲区接口的对象创建 memoryview 对象。 如果 obj 支持可写缓冲区导出,则 memoryview 对象将是读/写的,否则它可能是只读的或由导出器决定的读/写。
PyObject *PyMemoryView_FromMemory(char *mem, Py_ssize_t size, int flags)

使用 mem 作为底层缓冲区创建一个 memoryview 对象。 flags 可以是 PyBUF_READPyBUF_WRITE 之一。

3.3 版中的新功能。

PyObject *PyMemoryView_FromBuffer(Py_buffer *view)
创建一个包装给定缓冲区结构的 memoryview 对象 view。 对于简单的字节缓冲区,PyMemoryView_FromMemory() 是首选函数。
PyObject *PyMemoryView_GetContiguous(PyObject *obj, int buffertype, char order)
从定义缓冲区接口的对象为 连续 内存块(以“C”或“F”ortran order)创建 memoryview 对象。 如果内存是连续的,则 memoryview 对象指向原始内存。 否则,进行复制并且 memoryview 指向一个新的 bytes 对象。
int PyMemoryView_Check(PyObject *obj)
如果对象 obj 是 memoryview 对象,则返回 true。 当前不允许创建 memoryview 的子类。
Py_buffer *PyMemoryView_GET_BUFFER(PyObject *mview)
返回指向内存视图的导出器缓冲区私有副本的指针。 mview must 是一个内存视图实例; 这个宏不检查它的类型,你必须自己做,否则你会有崩溃的风险。
Py_buffer *PyMemoryView_GET_BASE(PyObject *mview)
如果内存视图是由函数 PyMemoryView_FromMemory()PyMemoryView_FromBuffer() 之一创建的,则返回指向内存视图所基于的导出对象的指针或 NULL ]。 mview 必须 是一个内存视图实例。