Comment on page
👯♀️ Kopyalama
Python ile kopyalama, copy, deep copy ve shallow copy işlemleri
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 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 işlemi
cls
ile yeniden sınıf objesi oluşturmak ile benzerdir - Alttaki örnekteki
class2
ileclass3
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
Last modified 1mo ago