Python memoryview() 函数



Python memoryview() 函数是一个内置函数,用于从指定对象获取“内存视图”对象。此对象允许我们访问任何其他对象的内部数据,而无需复制数据。但唯一的条件是给定的对象必须支持缓冲区协议。

当我们处理大型数据集时,与其复制数据(这会消耗更多资源),memoryview() 函数直接操作现有数据,这有助于提高效率,节省时间和内存。

语法

Python memoryview() 函数的语法如下所示:

memoryview(object)

参数

Python memoryview() 函数接受单个参数:

  • object - 此参数表示 bytes 对象或 bytearray 对象。

返回值

Python memoryview() 函数返回指定对象的 memoryview 对象。

memoryview() 函数示例

练习以下示例以了解如何在 Python 中使用 memoryview() 函数

示例:memoryview() 函数的使用

memoryview() 函数适用于支持缓冲区协议的对象。如果向此函数传递不合适的对象,它将返回“TypeError”。在下面的代码中,我们传递了一个不支持缓冲区协议的列表。因此,我们将遇到 TypeError。

numericList = [29, 28, 27, 26, 25]
memView = memoryview(numericList)
print("The memory view of given list:")
print(memView) 

以下是上述代码的输出:

TypeError: memoryview: a bytes-like object is required, not 'list'

示例:使用 memoryview() 将字节数组转换为内存视图

在此示例中,我们使用 Python memoryview() 函数将 Bytearray 转换为 Memoryview 对象。然后我们显示该对象的第一个元素。

byteArray = bytearray("TUTORIALSPOINT", "utf-8")
mmviewOfArr = memoryview(byteArray)
print("Accessing the first element of memoryview:")
print(mmviewOfArr[0])

运行上述程序时,将产生以下结果:

Accessing the first element of memoryview:
84

示例:使用 memoryview() 修改字节数组

我们还可以通过 memoryview() 函数修改给定的字节数组。在下面的代码中,定义了一个 bytearray,并使用其索引修改前三个字符的值。

byteArray = bytearray("TUTORIALSPOINT", "utf-8")
mmviewOfArr = memoryview(byteArray)
print("Orginal element of memoryview:", byteArray)
mmviewOfArr[0] = 116
mmviewOfArr[1] = 117
mmviewOfArr[2] = 116
print("After modifying the memoryview:", byteArray)

以下是上述代码的输出:

Orginal element of memoryview: bytearray(b'TUTORIALSPOINT')
After modifying the memoryview: bytearray(b'tutORIALSPOINT')

示例:使用 memoryview() 函数的 NumPy 数组

由于NumPy支持缓冲区协议,因此它与memoryview()函数兼容。在下面的Python代码中,我们创建了一个NumPy数组,并显示该数组的最后三个元素。

import numpy as np
newnpArr = np.array([29, 28, 27, 26, 25])
memView = memoryview(newnpArr)
print("The last three elements of array:")
print(memView[2:5].tolist())  

上述代码的输出如下:

The last three elements of array:
[27, 26, 25]
python_built_in_functions.htm
广告