Junior — Middle
Python'da nesnelerin derin kopyası ile yüzeysel kopyası arasındaki fark nedir ve ne zaman kullanılmalıdır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Python'da, yüzeysel kopya (shallow copy) yeni bir nesne oluşturur, ancak iç içe geçmiş nesneler kopyalanmaz, sadece referansları geçirilir. Derin kopya (deep copy) ise yeni bir nesne oluşturur ve tüm iç içe nesneleri rekürsif olarak kopyalar, böylece tamamen bağımsız bir yapı ortaya çıkar.
Ne zaman kullanılır:
- Yüzeysel kopya, iç içe nesnelerin değişmeyeceği veya iç içe nesnelerdeki değişikliklerin her iki kopyada da yansıtılması gerekiyorsa uygundur.
- Derin kopya, nesnenin tüm iç içe öğeleriyle tamamen bağımsız bir kopyası gerekiyorsa, kopyadaki değişikliklerin orijinali etkilememesi için gereklidir.
Örnek:
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 değişti
deep[1][1] = 200
print(original) # [[100, 2], [3, 4]] - orijinal değişmedi
Bu nedenle, yüzeysel ve derin kopya arasındaki seçim, kopyanın bağımsızlık gereksinimlerine bağlıdır.