Pernyataan penugasan dalam Python tidak menyalin objek, mereka membuat ikatan antara target dan objek.
jadi,, dict2 = dict1
itu menghasilkan pengikatan lain antara dict2
dan objek itudict1
merujuk.
jika Anda ingin menyalin sebuah dikt, Anda dapat menggunakan copy module
. Modul salin memiliki dua antarmuka:
copy.copy(x)
Return a shallow copy of x.
copy.deepcopy(x)
Return a deep copy of x.
Perbedaan antara penyalinan dangkal dan dalam hanya relevan untuk objek majemuk (objek yang berisi objek lain, seperti daftar atau instance kelas):
Sebuah salinan dangkal membangun sebuah objek senyawa baru dan kemudian (sejauh mungkin) memasukkan referensi ke dalamnya untuk benda yang ditemukan dalam bahasa aslinya.
Sebuah salinan dalam membangun sebuah objek senyawa baru dan kemudian, secara rekursif, menyisipkan salinan ke dalamnya benda-benda yang ditemukan di aslinya.
Misalnya, dalam python 2.7.9:
>>> import copy
>>> a = [1,2,3,4,['a', 'b']]
>>> b = a
>>> c = copy.copy(a)
>>> d = copy.deepcopy(a)
>>> a.append(5)
>>> a[4].append('c')
dan hasilnya adalah:
>>> a
[1, 2, 3, 4, ['a', 'b', 'c'], 5]
>>> b
[1, 2, 3, 4, ['a', 'b', 'c'], 5]
>>> c
[1, 2, 3, 4, ['a', 'b', 'c']]
>>> d
[1, 2, 3, 4, ['a', 'b']]
dict1
dandict2
menunjuk ke dikt yang sama.