Python memoryview() 语法
memoryview() 是 Python 的一个内置函数,它会返回一个内存视图对象,该对象可以用于在 Python 中操作二进制数据,例如音频、视频或图像等。
使用 memoryview() 函数可以提高处理效率,因为它允许你在不复制数据的情况下,可以直接访问原始数据的内存,而无需创建临时副本。
语法:
memoryview(object)说明:
memoryview() 函数接收单个参数。
object(必选):是一个支持缓冲协议的对象,可以是 bytes 对象、bytearray 对象或可缓冲对象。
Python memoryview() 摘要
| 使用频率 | 中 |
|---|---|
| 官方文档 | 查看 |
Python memoryview() 示例
接下来,我们通过几个简单的例子来讲解一下 Python memoryview() 函数是如何使用的。
示例 1:memoryview() 基本用法
# 创建一个 bytes 对象
data = bytes('lvyenet', 'utf-8')
# 创建一个视图对象
view = memoryview(data)
# 访问视图对象的内容
print(view[0])
print(view[1])
print(view[2])
print(view[0:2])运行结果如下。
108
118
121
<memory at 0x0000022C42914880>分析:
对于 bytes() 函数创建的二进制数据,我们只能访问而不能修改。
示例 2:修改视图对象内容
# 创建一个 bytearray 对象
data = bytearray('lvyenet', 'utf-8')
# 创建一个视图对象
view = memoryview(data)
# 修改视图对象的内容
view[0] = ord('a')
view[1] = ord('b')
view[2] = ord('c')
print(data)运行结果如下。
bytearray(b'abcenet')分析:
对于 bytearray() 函数创建的二进制数据,我们可以访问也可以修改。
memoryview() 对象
对于 memoryview 对象来说,它有如下表所示的常用方法。
| 方法 | 说明 |
|---|---|
| tobytes() | 将缓冲区的数据作为字节串返回 |
| hex() | 以 “十六进制形式” 返回缓冲区数据 |
| tolist() | 以 “列表形式” 返回缓冲区数据 |
| toreadonly() | 返回 memoryview 对象的只读版本,原始的 memory 对象不会被改变 |
| release() | 释放由内存视图对象所公开的底层缓冲区 |
bytes()、bytearray() 与 memoryview() 的区别
bytes()、bytearray() 与 memoryview() 这 3 个函数都可以用于操作二进制数据,它们之间的区别如下:
bytes():创建的对象是不可变的,适合表示不可变的二进制数据。bytearray():创建的对象是可变的,适合需要频繁修改的二进制数据。memoryview():创建内存视图,用于直接操作二进制数据。
| 函数 | 可变性 | 用途 |
|---|---|---|
| bytes() | 不可变 | 存储静态二进制数据(如文件内容) |
| bytearray() | 可变 | 频繁修改的二进制数据(如协议解析) |
| memoryview() | 内存视图 | 零拷贝操作缓冲区(如处理大型二进制数据) |
