Sobes.tech
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] - глубокая копия не изменилась

Таким образом, глубокое копирование используется, когда нужна полная независимость копии от оригинала, а поверхностное — когда достаточно скопировать только верхний уровень объекта.