Junior — Middle
Wyjaśnij, czym jest płytka kopia obiektów w Pythonie i czym różni się od głębokiej kopii.
sobes.tech AI
Odpowiedź od AI
Płytka kopia (shallow copy) w Pythonie tworzy nowy obiekt, ale obiekty zagnieżdżone w nim nie są kopiowane, tylko kopiowane są odwołania do nich. Oznacza to, że jeśli w obiekcie znajdują się struktury mutowalne zagnieżdżone (np. listy, słowniki), będą one współdzielone między oryginałem a kopią.
Głęboka kopia (deep copy) tworzy nowy obiekt i rekurencyjnie kopiuje wszystkie obiekty zagnieżdżone, tworząc całkowicie niezależną kopię.
Przykład:
import copy
original = [1, [2, 3]]
shallow = copy.copy(original)
deep = copy.deepcopy(original)
shallow[1].append(4)
print(original) # Wyświetli: [1, [2, 3, 4]] — zagnieżdżona lista zmieniła się również w oryginale
print(deep) # Wyświetli: [1, [2, 3]] — głęboka kopia nie zmieniła się
W związku z tym, płytka kopia jest odpowiednia, gdy obiekty zagnieżdżone się nie zmieniają, a głęboka — gdy potrzebna jest pełna niezależność kopii od oryginału.