Sobes.tech
Junior — Middle
95

Bir nesnenin tam bir kopyasını oluşturmak ile iç nesnelere referanslarını kopyalamak arasındaki fark nedir?

Sorulan şirketler
Леста

AI'dan gelen yanıt

sobes.tech yapay zeka

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

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