Saat membaca dokumentasi untuk dict.copy(), dikatakan bahwa itu membuat salinan kamus yang dangkal. Hal yang sama berlaku untuk buku yang saya ikuti (Referensi Python Beazley), yang mengatakan:
Metode m.copy () membuat salinan dangkal dari item yang terkandung dalam objek pemetaan dan menempatkannya dalam objek pemetaan baru.
Pertimbangkan ini:
>>> original = dict(a=1, b=2)
>>> new = original.copy()
>>> new.update({'c': 3})
>>> original
{'a': 1, 'b': 2}
>>> new
{'a': 1, 'c': 3, 'b': 2}
Jadi saya berasumsi ini akan memperbarui nilai original(dan menambahkan 'c': 3) juga karena saya sedang melakukan salinan yang dangkal. Seperti jika Anda melakukannya untuk daftar:
>>> original = [1, 2, 3]
>>> new = original
>>> new.append(4)
>>> new, original
([1, 2, 3, 4], [1, 2, 3, 4])
Ini berfungsi seperti yang diharapkan.
Karena keduanya adalah salinan dangkal, mengapa itu dict.copy()tidak berfungsi seperti yang saya harapkan? Atau pemahaman saya tentang menyalin dangkal vs dalam cacat?
![Ilustrasi 'a = b': 'a' dan 'b' keduanya menunjuk ke '{1: L}', 'L' menunjuk ke '[1, 2, 3]'.](https://i.stack.imgur.com/4AQC6.png)
![Ilustrasi 'b = a.copy ()': 'a' menunjuk ke '{1: L}', 'b' menunjuk ke '{1: M}', 'L' dan 'M' keduanya menunjuk ke '[ 1, 2, 3] '.](https://i.stack.imgur.com/Vtk4m.png)
![Ilustrasi 'b = copy.deepcopy (a)': 'a' menunjuk ke '{1: L}', 'L' menunjuk ke '[1, 2, 3]'; 'b' menunjuk ke '{1: M}', 'M' menunjuk ke contoh berbeda dari '[1, 2, 3]'.](https://i.stack.imgur.com/BO4qO.png)