Sobes.tech
Junior

Obyektlarni nusxalashning qaysi usullarini bilasiz?

sobes.tech AI

AIdan javob

Yuzaki va chuqur nusxa.

Yuzaki nusxa (Shallow Copy) yangi obyekt yaratadi, ammo ichki obyektlarga bo'lgan havolalar o'zgarmaydi. Asl obyektning ichki obyektlarida o'zgarishlar nusxaga ham ta'sir qiladi va aksincha.

Chuqur nusxa (Deep Copy) obyektning to'liq mustaqil nusxasini yaratadi, shu jumladan barcha ichki obyektlarning nusxasini ham. Asl obyektning ichki obyektlarida o'zgarishlar nusxaga ta'sir qilmaydi.

Python misollari:

# Yuzaki nusxa
import copy

original_list = [1, 2, [3, 4]]
shallow_copy_list = copy.copy(original_list)

# Asl obyekt ichidagi obyekt o'zgartirilsa, nusxaga ham ta'sir qiladi
original_list[2][0] = 99
# shallow_copy_list endi [1, 2, [99, 4]]
# Chuqur nusxa
import copy

original_list = [1, 2, [3, 4]]
deep_copy_list = copy.deepcopy(original_list)

# Asl obyekt ichidagi obyekt o'zgartirilsa, nusxaga ta'sir qilmaydi
original_list[2][0] = 99
# deep_copy_list hali ham [1, 2, [3, 4]]

Usul tanlovi obyektning tuzilishi va vazifaga bog'liq. Ichki havolalar bo'lmagan oddiy obyektlar uchun yuzaki nusxa etarli. Murakkab tuzilishga ega obyektlar yoki nusxaning to'liq mustaqil bo'lishi kerak bo'lsa, chuqur nusxa ishlatiladi.