Junior — Middle
Каква е разликата между дълбоко и повърхностно копиране на обекти в Python и кога трябва да се използва?
sobes.tech AI
Отговор от AI
В Python, повърхностното копиране (shallow copy) създава нов обект, но вложените обекти вътре в него не се копират, а просто се препращат по референция. Дълбокото копиране (deep copy) създава нов обект и рекурсивно копира всички вложени обекти, създавайки напълно независима структура.
Кога да използвате:
- Повърхностното копиране е подходящо, ако вложените обекти няма да се променят или ако промените във вложените обекти трябва да се отразяват и в двете копия.
- Дълбокото копиране е необходимо, когато е необходима напълно независима копие на обекта с всички вложени елементи, така че промените в копието да не влияят на оригинала.
Пример:
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]] - оригиналът се промени
deep[1][1] = 200
print(original) # [[100, 2], [3, 4]] - оригиналът не се промени
Изборът между повърхностно и дълбоко копиране зависи от изискванията за независимост на копието.