Junior — Middle
გთხოვთ, ახსნათ, რა არის ზედაპირული კოპირება Python-ში და როგორ განსხვავდება ის ღრმა კოპირებიდან.
sobes.tech AI
პასუხი AI-სგან
Python-ში ზედაპირული კოპირება (shallow copy) ქმნის ახალ ობიექტს, მაგრამ მისი შიგნით არსებული შიდა ობიექტები არ კოპირდება, მხოლოდ მათზე მითითებები კოპირდება. ანუ, თუ ობიექტში არსებობს მუტაბელი შიდა სტრუქტურები (მაგალითად, სია, ლექსიკონი), ისინი იქნება საერთო ორიგინალთან და კოპიასთან.
ღრმა კოპირება (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]] — ღრმა კოპირება არ შეიცვალა
ამიტომ, ზედაპირული კოპირება შესაფერისია, როდესაც შიდა ობიექტები არ იცვლება, ხოლო ღრმა — როდესაც სჭირდება სრული დამოუკიდებლობა კოპიისა და ორიგინალის შორის.