MemoryView
MemoryView enable slicing action in bytearray
and str
WILL NOT return a new object.
Given bytearray
is mutable and str
is immutable, only bytearray can update the value.
>> a = 'aaaaaa'
>> b = a[:2] # Create a new string object
>> a = bytearray('aaaaaa')
>> b = a[:2] # Create a new bytearray object
>> b[:2] = 'bb' # The modification on b does not affect a
>> a
bytearray(b'aaaaaa')
>> b
bytearray(b'bb')
Applying MemoryView
>> a = 'aaaaaa'
>> ma = memoryview(a)
>> ma.readonly # Read-only MemoryView
True
>> mb = ma[:2] # Will not create a new String object
>> a = bytearray('aaaaaa')
>> ma = memoryview(a)
>> ma.readonly # Writable MemoryView
False
>> mb = ma[:2] # Will not create a new bytearray
>> mb[:2] = 'bb' # Modification on mb will not affect ma
>> mb.tobytes()
'bb'
>> ma.tobytes()
'bbaaaa'
Last updated
Was this helpful?