Sobes.tech
Junior

Yüzeysel kopyalama nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Yüzeysel kopya, yeni karmaşık bir nesne oluşturur, ancak içinde bulunan gömülü nesnelerin kopyalarını oluşturmaz. Bunun yerine, orijinal nesnenin gömülü nesnelerine referanslar kopyalanır.

Ana noktalar:

  • Yeni bir koleksiyon (liste, sözlük, küme) oluşturur.
  • Yeni koleksiyonun öğeleri, orijinal koleksiyonun aynı nesnelerine referanslardır.
  • Bir kopyadaki gömülü nesnelerde yapılan değişiklikler diğerine yansır.
  • Koleksiyonun kendisinde (öğe ekleme/silme) yapılan değişiklikler diğerini etkilemez.

Uygulamalar:

  • Listeler, sözlükler, kümeler için .copy() yöntemi.
  • copy modülünden copy.copy() fonksiyonu.
  • Listeler için dilimleme [:].
# Liste örneği
original_list = [[1, 2], 3]
shallow_copy_list = original_list.copy()

print(f"Orijinal: {original_list}")
print(f"Yüzeysel kopya: {shallow_copy_list}")
print(f"Gömülü listelerin aynı nesne olup olmadığı: {original_list[0] is shallow_copy_list[0]}") # True - referanslar aynı

original_list[0][0] = 99 # Gömülü listeyi değiştiriyoruz

print(f"Değişiklik sonrası: {original_list}")
print(f"Yüzeysel kopya değişiklik sonrası: {shallow_copy_list}") # Her iki kopyada da değişiklik görünür

original_list.append(4) # Koleksiyonu kendisini değiştiriyoruz

print(f"Append sonrası: {original_list}")
print(f"Yüzeysel kopya append sonrası: {shallow_copy_list}") # Sadece orijinalde
# copy.copy() örneği
import copy

original_dict = {'a': [1, 2], 'b': 3}
shallow_copy_dict = copy.copy(original_dict)

print(f"Orijinal: {original_dict}")
print(f"Yüzeysel kopya: {shallow_copy_dict}")
print(f"Gömülü listelerin aynı nesne olup olmadığı: {original_dict['a'] is shallow_copy_dict['a']}") # True

original_dict['a'][0] = 99 # Gömülü listeyi değiştiriyoruz

print(f"Değişiklik sonrası: {original_dict}")
print(f"Yüzeysel kopya değişiklik sonrası: {shallow_copy_dict}") # Her iki kopyada da değişiklik görünür