我有两个例子:
# example one:
>>> import array
>>> arr = array.array("h", [-2,-1,0,1,2])
>>> print(list(arr)) # [-2,-1,0,1,2]
>>> mem_arr = memoryview(arr)
>>> mem_arr.tolist() # returns [-2,-1,0,1,2]
>>> mem_arr[0] = 1
>>> mem_arr.tolist() # returns [1,-1,0,1,2]
>>> print(list(arr)) # [1,-1,0,1,2]
和
# example two:
>>> import array
>>> arr = array.array("h", [-2,-1,0,1,2])
>>> b = arr
>>> print(list(b)) # [-2,-1,0,1,2]
>>> b[0] = 1
>>> print(list(b)) # [1,-1,0,1,2]
>>> print(list(arr)) # [1,-1,0,1,2]
这两个示例都修改了数组中的值而不复制原始值。我认为唯一的区别是:
在第一个例子中,我创建了memoryview
对象,它使用与原始数组不同的内存块。在第二个示例中,两个引用arr
和b
都指向原始数组。
那么,memoryview
与" ="相比有什么优势?在内存共享方面,或在什么情况下我应该使用memoryview
?