Sobes.tech
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]] - оригиналът не се промени

Изборът между повърхностно и дълбоко копиране зависи от изискванията за независимост на копието.