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.