Jump to content

Python

  • entries
    53
  • comments
    0
  • views
    405

Shallow Copying ve Deep Copying


Doğuhan ELMA

44 views

Python'da, bir nesnenin kopyasını oluşturmanın iki yolu vardır: shallow (yüzeyel) kopyalama ve deep (derin) kopyalama.

Shallow Copying: Shallow kopyalama, bir nesnenin bir kopyasını oluşturur, ancak bu kopya, orijinal nesne ile aynı iç içe geçmiş nesnelere (nested objects) referans verir. Yani, bir liste veya sözlük gibi bir nesnenin shallow kopyasını oluşturduğunuzda, kopya ve orijinal nesne, aynı iç içe geçmiş nesnelere referans verir. Bu, bir iç içe geçmiş nesnenin kopyada değiştirilmesi durumunda, bu değişikliğin orijinal nesneyi de etkileyeceği anlamına gelir.

Python'da, copy modülünün copy fonksiyonu veya bir liste için list fonksiyonu veya bir sözlük için dict fonksiyonu ile shallow kopya oluşturabilirsiniz.

Deep Copying: Deep kopyalama, bir nesnenin bir kopyasını oluşturur ve ayrıca iç içe geçmiş nesnelerin de yeni kopyalarını oluşturur. Yani, bir liste veya sözlük gibi bir nesnenin deep kopyasını oluşturduğunuzda, kopya ve orijinal nesne, farklı iç içe geçmiş nesnelere referans verir. Bu, bir iç içe geçmiş nesnenin kopyada değiştirilmesi durumunda, bu değişikliğin orijinal nesneyi etkilemeyeceği anlamına gelir.

Python'da, copy modülünün deepcopy fonksiyonu ile deep kopya oluşturabilirsiniz.

Örnek:

import copy

# original list
original = [1, 2, [3, 4]]

# creating a shallow copy
shallow = list(original)

# creating a deep copy
deep = copy.deepcopy(original)

# changing the original list
original[2][0] = 'a'

print(original)  # Outputs: [1, 2, ['a', 4]]
print(shallow)   # Outputs: [1, 2, ['a', 4]]
print(deep)      # Outputs: [1, 2, [3, 4]]

Bu örnekte, orijinal listeyi değiştirdiğimizde, shallow kopya da değişir, çünkü aynı iç içe geçmiş listeye referans verir. Ancak, deep kopya değişmez, çünkü iç içe geçmiş listenin kendi kopyasına sahiptir.

0 Comments


Recommended Comments

There are no comments to display.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...