Junior — Middle
94
Was ist der Unterschied zwischen dem Erstellen einer vollständigen Kopie eines Objekts und dem Kopieren seiner Referenzen auf interne Objekte?
Unternehmen wurden gefragt
Леста
Antwort von AI
sobes.tech KI
В 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] - глубокая копия не изменилась
Таким образом, глубокое копирование используется, когда нужна полная независимость копии от оригинала, а поверхностное — когда достаточно скопировать только верхний уровень объекта.