Junior — Middle
Python-da obyektlərin dərin nüsxəsi ilə səthi nüsxəsi arasındakı fərq nədir və nə vaxt istifadə edilməlidir?
sobes.tech Süni İntellekt
AI-dan cavab
Python-da, yüzeysel nüsxə (shallow copy) yeni obyekt yaradır, lakin onun içərisindəki daxili obyektlər nüsxələnmir, sadəcə referanslar ötürülür. Dərin nüsxə (deep copy) isə yeni obyekt yaradır və bütün daxili obyektləri rekursiv şəkildə nüsxələyir, tam müstəqil strukturu yaradır.
Nə zaman istifadə etmək:
- Yüzeysel nüsxə uyğundur, əgər daxili obyektlər dəyişməyəcək və ya daxili obyektlərdəki dəyişikliklər hər iki nüsxədə əks olunmalıdırsa.
- Dərin nüsxə isə, obyektin bütün daxili elementləri ilə tam müstəqil nüsxəsini tələb etdikdə, nüsxədəki dəyişikliklərin orijinala təsir etməməsi üçün lazımdır.
Nümunə:
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]] - orijinal dəyişdi
deep[1][1] = 200
print(original) # [[100, 2], [3, 4]] - orijinal dəyişməyib
Beləliklə, yüzeysel və dərin nüsxə arasındakı seçim, nüsxənin müstəqillik tələblərinə bağlıdır.