• bir objenin klonlanması operasyonu. objenin içindeki öteki fieldlar da obje ile birlikte kopyalanır. fakat bu fieldlar başka objelere referans olan pointerlar ise o objelerin de recursive olarak klonlanması yapılmaz, sadece o pointer fielddaki adres değeri kopyalanır.

    recursive olarak bulduğunu kopyalayan hardcore copy işlemine ise (bkz: deep copy) denir
  • shallow copy, kopyalanacak olan nesneye ait olan üye (attribute, value, variable) bilgilerinin bellek adreslerini kopyalayarak yeni nesneye verir. böylece kopyanın alındığı nesnenin üyeleri üzerinde bir değişiklik yapıldığında kopyalanan nesnenin de aynı değişikliği kabul etmesi beklenir. python implementasyonuna bir bakacak olursak:

    import copy

    _list = [1, 2, 3, [4, 5]]
    shallow_copy = copy.copy(_list)

    print(_list) # [1, 2, 3, [4, 5]]
    print(shallow_copy) # [1, 2, 3, [4, 5]]

    shallow_copy[3][0] = "yeni deger"

    print(shallow_copy) # [1, 2, 3, ['yeni deger', 5]]
    print(_list) # [1, 2, 3, ['yeni deger', 5]]

    aslında kısaca shallow copy referans değerleri kopyalar eğer direkt olarak değerlerin tam bir kopyasını almak istiyorsak deep copy kullanmamız gerekmektedir.
hesabın var mı? giriş yap