Junior
Obyektlərin surətini çıxarmağın hansı metodlarını bilirsiniz?
sobes.tech Süni İntellekt
AI-dan cavab
Yüzeysel və dərin nüsxə.
Yüzeysel nüsxə (Shallow Copy) yeni bir obyekt yaradır, lakin iç-içə obyektlərə olan istinadlar eyni qalır. Orijinal obyektin iç-içə obyektlərində edilən dəyişikliklər nüsxəyə də təsir edir və əksinə.
Dərin nüsxə (Deep Copy) obyektin tam müstəqil nüsxəsini yaradır, o cümlədən bütün iç-içə obyektlərin nüsxəsini də. Orijinalın iç-içə obyektlərində edilən dəyişikliklər nüsxəyə təsir etmir.
Python nümunələri:
# Yüzeysel nüsxə
import copy
original_list = [1, 2, [3, 4]]
shallow_copy_list = copy.copy(original_list)
# Orijinalda iç-içə obyekt üzərində dəyişiklik nüsxəyə də təsir edir
original_list[2][0] = 99
# shallow_copy_list indi [1, 2, [99, 4]]
# Dərin nüsxə
import copy
original_list = [1, 2, [3, 4]]
deep_copy_list = copy.deepcopy(original_list)
# Orijinalda iç-içə obyekt üzərində dəyişiklik nüsxəyə təsir etmir
original_list[2][0] = 99
# deep_copy_list hələ də [1, 2, [3, 4]]
Yöntəm seçimi obyektin quruluşundan və tapşırıqdan asılıdır. Sadə obyektlər üçün yüzeysel nüsxə kifayət edir. Çətin strukturlu obyektlər və ya nüsxənin tam müstəqil olması lazım olduqda, dərin nüsxə istifadə olunur.