Python'daki atama ifadeleri nesneleri kopyalamaz, bir hedef ile bir nesne arasında bağlar oluşturur.
böylece, dict2 = dict1
başvurulan dict2
nesne ile nesne arasında başka bir bağlanma ile sonuçlanır dict1
.
bir dikteyi kopyalamak istiyorsanız copy module
,. Kopyalama modülünün iki arayüzü vardır:
copy.copy(x)
Return a shallow copy of x.
copy.deepcopy(x)
Return a deep copy of x.
Sığ ve derin kopyalama arasındaki fark yalnızca bileşik nesnelerle (listeler veya sınıf örnekleri gibi başka nesneler içeren nesneler) ilgilidir:
Bir basit bir kopyasını nesnelere içine referanslar orijinal bulunan ekler (mümkün olduğu ölçüde) ve sonra yeni bir bileşik nesnesi ve oluşturur.
Bir derin kopyalama amaçları orijinal arasından içine yeni bir bileşik nesne ve daha sonra, ardışık olarak, uçlar kopya oluşturur.
Örneğin, python 2.7.9'da:
>>> 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')
ve sonuç:
>>> 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
ve gösterebilirsinizdict2
.