内置函数 memoryview() 用于返回给定对象的内存视图对象。内存视图是 Python 中公开缓冲区协议的更好方式。通过创建内存视图对象,它可以让您访问对象的内部缓冲区。缓冲区协议有助于访问对象的内部数据,内部数据可以是内存数组或缓冲区。
memoryview(obj) # Where obj can be a byte or bytearray
只接受一个参数。此处 obj 将支持缓冲区协议(字节、字节数组)。
| 参数 | 描述 | 必需/可选 |
|---|---|---|
| obj | 内部数据将被公开的对象 | 必需 |
我们还可以在内存视图中更新对象。
| 输入 | 返回值 |
|---|---|
| obj | 内存视图对象 |
#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]
# 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')
barr = bytearray('Python','utf-8')
mv = memoryview(barr)
print(type(mv))
mv[0] = 65
print(barr)
输出
bytearray(b'Aython')