Instrukcje przypisania w Pythonie nie kopiują obiektów, tworzą powiązania między celem a obiektem.
Więc dict2 = dict1
, wynika inny wiązania pomiędzy dict2
i obiekt, który dict1
odnosi się do.
jeśli chcesz skopiować nagranie, możesz użyć copy module
. Moduł kopiowania ma dwa interfejsy:
copy.copy(x)
Return a shallow copy of x.
copy.deepcopy(x)
Return a deep copy of x.
Różnica między płytkim a głębokim kopiowaniem dotyczy tylko obiektów złożonych (obiektów zawierających inne obiekty, takich jak listy lub instancje klas):
Płytkie kopii tworzy nowy obiekt, a następnie związek (w zakresie możliwym) wkłada odniesień do niej na przedmioty znajdujące się w oryginale.
ZA Głęboka kopia konstruuje nowy obiekt związek, a następnie rekurencyjnie, wkładki do niego kopie obiektów znalezionych w oryginale.
Na przykład w 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')
a wynikiem jest:
>>> 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
idict2
wskazać ten sam słownik.