Tutorial Study Image

Python memoryview()

内置函数 memoryview() 用于返回给定对象的内存视图对象。内存视图是 Python 中公开缓冲区协议的更好方式。通过创建内存视图对象,它可以让您访问对象的内部缓冲区。缓冲区协议有助于访问对象的内部数据,内部数据可以是内存数组或缓冲区。


memoryview(obj) # Where obj can be a byte or bytearray
 

memoryview() 参数

只接受一个参数。此处 obj 将支持缓冲区协议(字节、字节数组)。

参数 描述 必需/可选
obj 内部数据将被公开的对象 必需

memoryview() 返回值

我们还可以在内存视图中更新对象。

输入 返回值
obj 内存视图对象

Python 中 memoryview() 方法的示例

示例 1:memoryview() 在 Python 中如何工作?


#random bytearray
random_byte_array = bytearray('ABC', 'utf-8')

mv = memoryview(random_byte_array)

# access memory view's zeroth index
print(mv[0])

# create byte from memory view
print(bytes(mv[0:2]))

# create list from memory view
print(list(mv[0:3]))
 

输出

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

示例 2:使用内存视图修改内部数据


# random bytearray
random_byte_array = bytearray('ABC', 'utf-8')
print('Before updation:', random_byte_array)

mv = memoryview(random_byte_array)

# update 1st index of mv to Z
mv[1] = 90
print('After updation:', random_byte_array)
 

输出

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

示例 3:在内存视图中更新对象。


barr = bytearray('Python','utf-8')
mv = memoryview(barr)
print(type(mv))
mv[0] = 65
print(barr)
 

输出

bytearray(b'Aython')