Heim > Artikel > Backend-Entwicklung > Tiefe Kopie und flache Kopie in Python
copy.copy flache Kopie kopiert nur das übergeordnete Objekt und nicht die internen untergeordneten Objekte des Objekts.
copy.deepcopy Objekt und seine Unterobjekte tief kopieren
Beispiel:
>>> import copy
>> > ; a=[1,2,3,4,['a','b']]
>>> Es entspricht jetzt B und A, die auf denselben Speicherbereich verweisen.
Jede Änderung von A wird synchronisiert.
& gt; ) #shallow copy copy . Äquivalent dazu, dass c und a jetzt zwei separate Speicherbereiche sind
>>> d=copy.deepcopy(a) # Deep copy. Entspricht einem völlig unabhängigen Speicherbereich
>>> wirkt sich auf die flache Kopie aus? ;> a[4].append('c') # Dies ist ein internes Unterobjekt und hat keinen Einfluss darauf. Das heißt, es zeigt immer noch auf ein Stück von
>>> 3, 4, ['a', 'b', 'c'], 5]
>>> print 'b',b
b [1, 2, 3, 4, ['a', 'b', 'c'], 5]
>>> print 'c',c
c [1, 2, 3, 4, ['a', 'b', 'c']]
>>> print 'd',d
d [1, 2, 3, 4, ['a', 'b']]
>>>
Wenn sie kopiert werden, sind sie unabhängig voneinander.
Wie bei copy.copy wird tatsächlich eine flache Kopie erstellt, da es sich um das übergeordnete Objekt handelt. Das übergeordnete Objekt ist also nicht betroffen und es gibt zwei separate Bereiche.
Fazit: Was auch immer kopiert wird, ist ein separater Speicherbereich. Es ist vom Originalspeicher getrennt. Egal wie Sie es ändern, es hat keine Auswirkungen auf mich