Junior — Middle
Обяснете какво е повърхностно копиране на обекти в Python и как се различава от дълбокото копиране.
sobes.tech AI
Отговор от AI
Повърхностното копиране (shallow copy) в Python създава нов обект, но вложените обекти вътре в него не се копират, а просто се копират референциите към тях. Тоест, ако вътре в обекта има променливи структури (например списъци, речници), те ще бъдат споделени между оригинала и копието.
Дълбокото копиране (deep copy) създава нов обект и рекурсивно копира всички вложени обекти, създавайки напълно независима копие.
Пример:
import copy
original = [1, [2, 3]]
shallow = copy.copy(original)
deep = copy.deepcopy(original)
shallow[1].append(4)
print(original) # Ще изведе: [1, [2, 3, 4]] — вложеният списък също се промени в оригинала
print(deep) # Ще изведе: [1, [2, 3]] — дълбокото копие не се промени
Следователно, повърхностното копиране е подходящо, когато вложените обекти не се променят, а дълбокото — когато е необходима пълна независимост на копието от оригинала.