Разница между поверхностным и глубоким копированием актуальна только для составных объектов (объектов, которые содержат другие объекты, например списки или экземпляры классов). )
Похоже, что объект bytearray не является составным объектом (я так думаю, потому что, в отличие от объекта list, bytearray не содержит ссылок на другие объекты). Следовательно, copy.copy и copy.deepcopy дадут одинаковый результат для такого объекта. Но в документации не описываются подробности для этого конкретного типа данных. Я знаю, что для неизменяемых числовых объектов и объектов str (они, очевидно, тоже не являются составными) copy.copy и copy.deepcopy просто возвращают свой аргумент (здесь они не создают новый объект ).
Я провел несколько тестов с объектом bytearray obj и пришел к выводу, что для такого объекта функции copy.copy(obj) и copy.deepcopy(obj) создаст новый объект с тем же значением, что и исходный объект obj:
Код: Выделить всё
>>> import copy
>>> obj = bytearray(b'hello')
>>> obj2 = copy.copy(obj)
>>> obj3 = copy.deepcopy(obj)
>>> obj2 is obj; obj3 is obj
False
False
>>> obj2 == obj; obj3 == obj
True
True
Подробнее здесь: https://stackoverflow.com/questions/791 ... y-argument