Back to questions
Junior — Middle
65
В чем разница между созданием полной копии объекта и копированием его ссылок на внутренние объекты?
Companies where asked
Леста
Answer from AI
sobes.tech AI
В Python существует два основных способа копирования объектов: поверхностное (shallow copy) и глубокое (deep copy).
-
Поверхностное копирование создает новый объект, но внутренние объекты (например, вложенные списки, словари) не копируются, а лишь копируются ссылки на них. То есть изменения во вложенных объектах отразятся в обеих копиях.
-
Глубокое копирование создает новый объект и рекурсивно копирует все вложенные объекты, создавая полностью независимую копию.
Пример:
import copy
original = [1, [2, 3], 4]
shallow = copy.copy(original)
deep = copy.deepcopy(original)
shallow[1].append(5)
print(original) # [1, [2, 3, 5], 4] - изменился вложенный список
print(shallow) # [1, [2, 3, 5], 4]
print(deep) # [1, [2, 3], 4] - глубокая копия не изменилась
Таким образом, глубокое копирование используется, когда нужна полная независимость копии от оригинала, а поверхностное — когда достаточно скопировать только верхний уровень объекта.