Heim  >  Artikel  >  Backend-Entwicklung  >  Tiefe Kopie und flache Kopie in Python

Tiefe Kopie und flache Kopie in Python

巴扎黑
巴扎黑Original
2016-11-29 11:35:411049Durchsuche

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn