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