📜  Python中的 memoryview()(1)

📅  最后修改于: 2023-12-03 14:46:35.778000             🧑  作者: Mango

Python中的memoryview()

在Python中,memoryview()函数提供了一种内存访问方式,它允许对可变缓冲区的内存进行高效访问。该函数返回一个内存视图对象,可以对缓冲区进行切片和索引。

语法
memoryview(obj)

参数说明:

  • obj:对象,比如字节数组、列表、字符串等等。
返回值

memoryview()函数返回一个内存视图对象,该对象可用于访问缓冲区的内存。

使用内存视图

内存视图可以通过切片或索引操作来访问缓冲区中的元素。例如,可以使用切片操作获取缓冲区的一部分:

buf = bytearray(b'hello world')
mv = memoryview(buf)
print(mv[0:5])        # 输出:b'hello'

可以使用索引来访问单个元素:

buf = bytearray(b'hello world')
mv = memoryview(buf)
print(mv[0])          # 输出:104,对应字符'h'的ascii码

还可以将内存视图转换为其他类型的数组来实现对缓冲区的操作:

import numpy as np

buf = bytearray(b'hello world')
mv = memoryview(buf)
arr = np.frombuffer(mv, dtype='int8')
arr[0] = 32    # 修改第一个字符为空格
print(buf)     # 输出:bytearray(b' ello world')
注意事项
  • memoryview()函数创建的是一个内存视图对象,而不是新的缓冲区。因此,对内存视图的修改将直接影响到原始缓冲区。
  • memoryview()函数所接收的参数必须是可读写的缓冲区对象,例如字节数组、列表、字符串等等,否则会抛出TypeError异常。