Что это нам даёт? Как известно, строка это неизменяемый тип. Всякий раз когда вы делаете любые манипуляции со строкой вы создаёте новую строку.
Если же её преобразовать в bytearray то все изменения будут происходить с оригинальным объектом без копирования.
Создаём массив
>>> arr = bytearray(struct.pack('=11s', b'Hello World'))
bytearray(b'Hello World')
Можем добавить элемент в массив>>> arr.append(0)Или удалить лишний элемент по индексу
bytearray(b'Hello World\x00')
>>> del arr[-1]Для добавления в строку используем extend
bytearray(b'Hello World')
>>> arr.extend(b'!')С помощью pack_into() вставляем данные в имеющийся массив заменяя данные
bytearray(b'Hello World!')
>> struct.pack_into("=6s", arr, 6, b'Python')
bytearray(b'Hello Python')
Достаём результат>>> struct.unpack("=12s", arr)[0]
b'Hello Python'
И всё это мы сделали не создавая новых объектов! Это и экономит память, и выполняется быстрей, так как мы работаем с одним и тем же объектом.#tricks #libs