Sobes.tech
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.