做自由与创造的先行者

Types: 10. memoryview type

Python开发手册

10. memoryview type

2.7版本的新功能。

memoryview对象允许Python代码访问支持缓冲协议的对象的内部数据,而无需复制。内存通常被解释为简单的字节。

class memoryview(obj)

创建一个memoryview引用obj。obj必须支持缓冲区协议。支持缓冲协议的内置对象包括str和bytearray(但不unicode)。

A memoryview具有元素的概念,元素是由原始对象obj处理的原子内存单元。对于许多简单的类型(如str和)bytearray,元素是单个字节,但其他第三方类型可能会暴露更大的元素。

len(view)返回内存视图中元素的总数,视图。该itemsize属性将为您提供单个元素中的字节数。

memoryview支持切片以显示其数据。采用单个索引将返回一个元素作为str对象。全切片将导致子视图:

>>> v = memoryview('abcefg')

>>> v[1]

'b'

>>> v[-1]

'g'

>>> v[1:4]

>>> v[1:4].tobytes()

'bce'

复制

如果memoryview结束的对象支持更改其数据,则memoryview支持片分配:

>>> data = bytearray('abcefg')

>>> v = memoryview(data)

>>> v.readonly

False

>>> v[0] = 'z'

>>> data

bytearray(b'zbcefg')

>>> v[1:4] = '123'

>>> data

bytearray(b'z123fg')

>>> v[2] = 'spam'

Traceback (most recent call last):

File "", line 1, in

ValueError: cannot modify size of memoryview object

复制

注意memoryview对象的大小不能被改变。

memoryview 有两种方法:

tobytes()

将缓冲区中的数据作为字符串(类的对象str)返回。

>>> m = memoryview("abc")

>>> m.tobytes()

'abc'

复制

tolist()

将缓冲区中的数据作为整数列表返回。

>>> memoryview("abc").tolist()

[97, 98, 99]

复制

还有几个只读属性可用:

format

包含struct视图中每个元素的格式(模块样式)的字符串。这默认为'B'一个简单的字节串。

itemsize

内存视图的每个元素的大小(以字节为单位)。

shape

一个整数元组,ndim表示将存储器的形状作为一个N维数组的长度。

ndim

一个整数,指示内存所代表的多维数组的维数。

strides

整数元组的长度,ndim以字节为单位给出数组中每个元素的每个元素的长度。

readonly

指示内存是否只读的布尔值。

网站建设开发|APP设计开发|小程序建设开发
下一篇:Types: 11. Context Manager Types
上一篇:Types: 9. File Objects