用法:
class memoryview(object)
创建一个引用
object
的memoryview
。object
必须支持缓冲协议。支持缓冲区协议的内置对象包括bytes
和bytearray
。memoryview
具有element
的概念,它是由原始object
处理的原子内存单元。对于许多简单类型,例如bytes
和bytearray
,一个元素是单个字节,但其他类型,例如array.array
可能有更大的元素。len(view)
等于tolist
的长度。如果view.ndim = 0
,则长度为 1。如果view.ndim = 1
,则长度等于视图中的元素数。对于更高维度,长度等于视图的嵌套列表表示的长度。itemsize
属性将为您提供单个元素中的字节数。memoryview
支持切片和索引以公开其数据。一维切片会产生一个子视图:>>> v = memoryview(b'abcefg') >>> v[1] 98 >>> v[-1] 103 >>> v[1:4] <memory at 0x7f3ddc9f4350> >>> bytes(v[1:4]) b'bce'
如果
format
是来自struct
模块的本机格式说明符之一,则还支持使用整数或整数元组进行索引,并返回具有正确类型的单个element
。一维内存视图可以用整数或one-integer 元组索引。多维内存视图可以用正好ndim
整数的元组索引,其中ndim
是维数。零维内存视图可以用空元组索引。这是一个非字节格式的示例:
>>> import array >>> a = array.array('l', [-11111111, 22222222, -33333333, 44444444]) >>> m = memoryview(a) >>> m[0] -11111111 >>> m[-1] 44444444 >>> m[::2].tolist() [-11111111, -33333333]
如果底层对象是可写的,则 memoryview 支持一维切片分配。不允许调整大小:
>>> data = bytearray(b'abcefg') >>> v = memoryview(data) >>> v.readonly False >>> v[0] = ord(b'z') >>> data bytearray(b'zbcefg') >>> v[1:4] = b'123' >>> data bytearray(b'z123fg') >>> v[2:3] = b'spam' Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: memoryview assignment: lvalue and rvalue have different structures >>> v[2:6] = b'spam' >>> data bytearray(b'z1spam')
具有“B”、‘b’ or ‘c’ 格式的可散列(只读)类型的一维内存视图也是可散列的。哈希定义为
hash(m) == hash(m.tobytes())
:>>> v = memoryview(b'abcefg') >>> hash(v) == hash(b'abcefg') True >>> hash(v[2:4]) == hash(b'ce') True >>> hash(v[::-2]) == hash(b'abcefg'[::-2]) True
在 3.3 版中更改:现在可以对一维内存视图进行切片。格式为“B”、‘b’ or ‘c’ 的一维内存视图现在是可散列的。
在 3.4 版中更改:memoryview 现在自动注册
collections.abc.Sequence
在 3.5 版中更改:memoryviews 现在可以用整数元组索引。
memoryview
有几种方法:还有几个可用的只读属性:
相关用法
- Python memoryview.itemsize用法及代码示例
- Python memoryview.nbytes用法及代码示例
- Python memoryview.cast用法及代码示例
- Python memoryview.obj用法及代码示例
- Python memoryview.hex用法及代码示例
- Python memoryview()用法及代码示例
- Python memoryview.toreadonly用法及代码示例
- Python memoryview.release用法及代码示例
- Python memoryview.tolist用法及代码示例
- Python memoryview.__eq__用法及代码示例
- Python memoryview.tobytes用法及代码示例
- Python statistics median_high()用法及代码示例
- Python statistics median_low()用法及代码示例
- Python statistics median()用法及代码示例
- Python statistics median_grouped()用法及代码示例
- Python mxnet.symbol.op.broadcast_logical_xor用法及代码示例
- Python mxnet.test_utils.get_zip_data用法及代码示例
- Python mxnet.ndarray.op.uniform用法及代码示例
- Python mxnet.symbol.op.log_softmax用法及代码示例
- Python mxnet.symbol.space_to_depth用法及代码示例
注:本文由纯净天空筛选整理自python.org大神的英文原创作品 memoryview。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。