Python memoryview() 函数

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 对象来说,它有如下表所示的常用方法。

memoryview 对象的方法
方法 说明
tobytes() 将缓冲区的数据作为字节串返回
hex() 以 “十六进制形式” 返回缓冲区数据
tolist() 以 “列表形式” 返回缓冲区数据
toreadonly() 返回 memoryview 对象的只读版本,原始的 memory 对象不会被改变
release() 释放由内存视图对象所公开的底层缓冲区

bytes()、bytearray() 与 memoryview() 的区别

bytes()、bytearray() 与 memoryview() 这 3 个函数都可以用于操作二进制数据,它们之间的区别如下:

  • bytes():创建的对象是不可变的,适合表示不可变的二进制数据。
  • bytearray():创建的对象是可变的,适合需要频繁修改的二进制数据。
  • memoryview():创建内存视图,用于直接操作二进制数据。
bytes()、bytearray() 与 memoryview()
函数 可变性 用途
bytes() 不可变 存储静态二进制数据(如文件内容)
bytearray() 可变 频繁修改的二进制数据(如协议解析)
memoryview() 内存视图 零拷贝操作缓冲区(如处理大型二进制数据)

上一篇: bytearray()

下一篇: repr()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号