本来第一次看《流畅的python》觉得这部分没用,就跳过去,后面又出现,回头看还是一知半解,查了诸多资料,好像有一点明白了,立下帖子。
1、memoryview
memoryview()
函数返回给定参数的内存查看对象(memory view)。
所谓内存查看对象,是指对支持缓冲区协议的数据进行包装,在不需要复制对象基础上允许Python代码访问。
可以简单理解为就是对内存地址的直接访问。
memoryview可以对对象进行索引或者切片,不过切片的返回结果为一个子memoryview对象:
import array
# 创建一个signed short 类型数组,占2bytes
nums = array.array('h', list(range(-2, 3)))
mem = memoryview(nums)
print(len(mem)) # 5
print(mem[0]) # -2
print(mem[1:4]) #
mem相当于nums在内存中的表示形式,但是属于不同的对象:
>>>mem is nums
False
>>>mem == nums
True
同样,memoryview对象有tolist方法可以转换为列表:
>>>mem.tolist()
[-2, -1, 0, 1, 2]
2、memoryview.cast
memoryview.cast
会把