Sobes.tech
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.