Python memoryview() 函数

2024年9月26日 | 阅读 2 分钟

python memoryview() 函数返回给定参数的 memoryview 对象。

在我们了解 memoryview 之前,我们必须了解 Python 的 Buffer Protocol。

Buffer Protocol 提供了一种访问对象内部数据的方法。 这种内部数据是一个内存数组或一个缓冲区。 它允许一个对象公开其内部数据(缓冲区),而其他对象可以在没有中间复制的情况下访问这些缓冲区。

它只能通过 C-API 访问,而不能使用我们的普通代码库。

因此,为了将相同的协议公开给普通 python 代码库,存在 memory view。

Memory View 对象允许 python 代码通过创建 memory view 对象来访问对象的内部缓冲区。

签名

参数

obj:它是一个要处理其内部数据的对象。 obj 必须支持缓冲协议,例如 bytes、bytearray 等。

返回

它返回给定参数的 memoryview 对象。

Python memoryview() 函数示例 1

下面的示例显示了 memoryview() 函数的工作原理。

输出

65
b'AB'
[65, 66, 67]

说明: 在上面的示例中,我们从字节数组 randomByteArray 创建了一个 memory view 对象 mv

然后,我们访问 mv 的第 0 个索引 'A' 并打印它(它给出了 ASCII 值 - 65)。

同样,我们访问 mv 的索引 0 和 1 ('AB'),然后将它们转换为字节。

最后,我们访问 mv 的所有索引并将其转换为列表。 由于 bytearray 内部存储了字母的 ASCII 值,因此输出是 A、B 和 C 的 ASCII 值的列表。

Python memoryview() 函数示例 2

下面的示例显示了如何使用 memoryview() 修改内部数据。

输出

Before updation: bytearray(b'ABC')
After updation: bytearray(b'AZC')

下一个主题Python 函数