Heim  >  Artikel  >  Backend-Entwicklung  >  Der Unterschied zwischen tiefer und flacher Kopie in Python

Der Unterschied zwischen tiefer und flacher Kopie in Python

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼Original
2019-06-24 14:28:203475Durchsuche

Die Zuweisung von Objekten in Python ist eigentlich eine Referenz auf das Objekt. Wenn ein Objekt erstellt und einer anderen Variablen zugewiesen wird, kopiert Python nicht das Objekt, sondern nur den Verweis auf das Objekt.

Der Unterschied zwischen tiefer und flacher Kopie in Python

Flache Kopie: Das äußerste Objekt selbst wird kopiert und die internen Elemente werden nur mit einer Referenz kopiert. Das heißt, das Objekt wird einmal kopiert, andere im Objekt referenzierte Objekte werden jedoch nicht kopiert.

Tiefe Kopie: Sowohl periphere als auch interne Elemente kopieren das Objekt selbst, nicht die Referenz. Das heißt, das Objekt wird einmal kopiert und andere im Objekt referenzierte Objekte werden ebenfalls kopiert.

Die Funktionen des tiefen und flachen Kopierens

1. Reduzieren Sie den Speicherverbrauch
2 Eine Kopie der Originaldaten, um zu verhindern, dass die Originaldaten nach der Änderung der Daten gefunden werden.

Verwandte Empfehlungen: „Python-Video-Tutorial

Flache Kopie (Kopie): Kopiert das übergeordnete Objekt und kopiert nicht die internen untergeordneten Objekte des Objekts.

Deepcopy: Die Deepcopy-Methode des Kopiermoduls kopiert das übergeordnete Objekt und seine untergeordneten Objekte vollständig.

>>>a = {1: [1,2,3]}
>>> b = a.copy()
>>> 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 erfordert die Einführung des Kopiermoduls:

>>>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]})

1. b = a.copy(): Flache Kopie, a und b sind unabhängige Objekte, aber ihre Unterobjekte zeigt immer noch auf ein einheitliches Objekt (ist eine Referenz).

Der Unterschied zwischen tiefer und flacher Kopie in Python

2. b = copy.deepcopy(a): Deep copy, a und b kopieren das übergeordnete Objekt und seine untergeordneten Objekte vollständig und sind völlig unabhängig.

Der Unterschied zwischen tiefer und flacher Kopie in Python

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen tiefer und flacher Kopie in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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