👯‍♀️ Kopyalama

Python ile kopyalama, copy, deep copy ve shallow copy işlemleri

👀 Hızlı Bakış

import copy
li1 = [1, 2, [3,5], 4]
# Shallow copy
li2 = copy.copy(li1)
# Deep copy
li3 = copy.deepcopy(li1)
# Slice ile deep copy
li4 = li1[:]

📢 Objenin kopyalama davranışlarını değiştirmek için __copy__, __deepcopy__ metotları override edilir

🆚 Shallow ve Deep Copy

🌫️ Shallow Copy

🕳 Deep Copy

Referans kopyalar

Değer kopyalar

Obje yeniden oluşturulur

Obje yeniden oluşturulur

Objenin her bir referansı kopyalanır ve yeniye aktarılır

Objenin her bir değeri tek tek kopyalanır ve yeniye aktarılır

Kopyalanan objenin referansı alındığından orijinal ile bağlantılıdır

Her bilgi tek tek kopyalandığından orijinal ile bağlantısı yoktur

Herhangi bir değişiklik diğerini de etkiler

Herhangi bir değişiklik diğerini etkilemez

📜 DeepCopy Hakkında

  • Deepcopy işlemi cls ile yeniden sınıf objesi oluşturmak ile benzerdir

  • Alttaki örnekteki class2 ile class3 benzer işlevi görmektedir

from copy import deepcopy
class AnyClass:
x: int
y: int
def __init__(self, x: int, y: int):
self.x = x
self.y = y
class1 = AnyClass(1, 2)
class2 = deepcopy(aclass)
class3 = AnyClass(class1.x, class2.y)
# class2 ile class3 benzer işlevi görmektedir

🔗 Faydalı Bağlantılar