Sobes.tech
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]] — дълбокото копие не се промени

Следователно, повърхностното копиране е подходящо, когато вложените обекти не се променят, а дълбокото — когато е необходима пълна независимост на копието от оригинала.