Skip to content

Latest commit

 

History

History
67 lines (49 loc) · 2.68 KB

File metadata and controls

67 lines (49 loc) · 2.68 KB
description Python ile kopyalama, copy, deep copy ve shallow copy işlemleri

👯‍♀️ Kopyalama

👀 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[:]

{% hint style="warning" %} 📢 Objenin kopyalama davranışlarını değiştirmek için __copy__, __deepcopy__ metotları override edilir {% endhint %}

🆚 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