I recently came across the dataType called bytearray
in python. Could someone provide scenarios where bytearrays are required?
A bytearray
is very similar to a regular python string (str
in python2.x, bytes
in python3) but with an important difference, whereas strings are immutable, bytearray
s are mutable, a bit like a list
of single character strings.
This is useful because some applications use byte sequences in ways that perform poorly with immutable strings. When you are making lots of little changes in the middle of large chunks of memory, as in a database engine, or image library, strings perform quite poorly; since you have to make a copy of the whole (possibly large) string. bytearray
s have the advantage of making it possible to make that kind of change without making a copy of the memory first.
But this particular case is actually more the exception, rather than the rule. Most uses involve comparing strings, or string formatting. For the latter, there's usually a copy anyway, so a mutable type would offer no advantage, and for the former, since immutable strings cannot change, you can calculate a hash
of the string and compare that as a shortcut to comparing each byte in order, which is almost always a big win; and so it's the immutable type (str
or bytes
) that is the default; and bytearray
is the exception when you need it's special features.