Sobes.tech
Junior — Middle

Czym różni się głęboka kopia obiektów w Pythonie od płytkiej, i kiedy należy jej używać?

sobes.tech AI

Odpowiedź od AI

W Pythonie, płytka kopia (shallow copy) tworzy nowy obiekt, ale obiekty zagnieżdżone w nim nie są kopiowane, tylko przekazywane jako odniesienia. Głęboka kopia (deep copy) tworzy nowy obiekt i rekurencyjnie kopiuje wszystkie obiekty zagnieżdżone, tworząc całkowicie niezależną strukturę.

Kiedy używać:

  • Płytka kopia jest odpowiednia, jeśli obiekty zagnieżdżone nie będą zmieniane lub jeśli zmiany w obiektach zagnieżdżonych mają odzwierciedlać się w obu kopiach.
  • Głęboka kopia jest konieczna, gdy potrzebna jest całkowicie niezależna kopia obiektu ze wszystkimi elementami zagnieżdżonymi, tak aby zmiany w kopii nie wpływały na oryginał.

Przykład:

import copy

original = [[1, 2], [3, 4]]
shallow = copy.copy(original)
deep = copy.deepcopy(original)

shallow[0][0] = 100
print(original)  # [[100, 2], [3, 4]] - oryginał się zmienił

deep[1][1] = 200
print(original)  # [[100, 2], [3, 4]] - oryginał się nie zmienił

Wybór między płytką a głęboką kopią zależy od wymagań dotyczących niezależności kopii.