Sobes.tech
Junior — Middle

Python-da obyektlərin səth nüsxəsinin nə olduğunu və onun dərin nüsxədən necə fərqləndiyini izah edin.

sobes.tech Süni İntellekt

AI-dan cavab

Python-da səthli nüsxə (shallow copy) yeni obyekt yaradır, amma onun içindəki iç obyektlər nüsxələnmir, sadəcə onlara istinadlar köçürülür. Yəni, obyekt daxilində dəyişdirilə bilən iç strukturlar (məsələn, siyahılar, lüğətlər) varsa, onlar orijinal və nüsxə arasında paylaşılır.

Dərin nüsxə (deep copy) isə yeni obyekt yaradır və bütün iç obyektləri rekursiv şəkildə nüsxələyir, tam müstəqil nüsxə yaradır.

Misal:

import copy

original = [1, [2, 3]]
shallow = copy.copy(original)
deep = copy.deepcopy(original)

shallow[1].append(4)
print(original)  # Nəticə: [1, [2, 3, 4]] — iç siyahı da orijinalda dəyişdi
print(deep)      # Nəticə: [1, [2, 3]] — dərin nüsxə dəyişməyib

Buna görə də, səthli nüsxə alma, iç obyektlər dəyişməzsə uyğundur və dərin nüsxə — nüsxənin orijinaldan tam müstəqil olması lazım olduqda istifadə olunur.