Direct Assignment: is actually the object's reference (alias).
shallow copy (copy): copies the parent object and does not copy the inner sub-object of the object.
deep Copy (deepcopy): The Deepcopy method of the Copy module, which completely copies the parent object and its child objects.
Example of a shallow copy of a dictionary
>>> a = {1: [a.copy]}>>> B = C ()>>> A, B ({1: [1, 2, 3]}, {1: [1, 2, 3
]})>>> a[1].append (4
)>>> A, B ({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})
Deep copy requires the introduction of the Copy module:
Instance
>>>import copy>>> c = copy.deepcopy (a)>>> A, C ({1: [1, 2, 3, 4]}, { 1: [1, 2, 3, 4]})>>> a[1].append (5)>>> A, C ({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})
Analytical
1,B = A: assignment references, both A and B point to the same object.
2, B = a.copy (): shallow Copy, A and B are separate objects, but their child objects still point to a uniform object (which is a reference).
B = Copy.deepcopy (a): deep Copy, A and B completely copy the parent object and its child objects, both are completely independent.
More examples
The following examples are copy.copy (shallow copy) and (copy.deepcopy) using the Copy module:
Instance
ImportCopy a= [1, 2, 3, 4, ['a','b']]#Original Objectb = A#assignment, a reference to a passing objectc = Copy.copy (a)#object Copy, shallow copyD = Copy.deepcopy (a)#object Copy, deep copyA.append (5)#Modify Object AA[4].append ('C')#Modify the [' A ', ' B '] Array object in Object a Print('A =', a)Print('B =', B)Print('C =', c)Print('d =', d)
The output of the above instance execution is:
('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']])
Python direct assignment, shallow copy, and deep copy parsing