Python-Objekt kopieren

Vaibhhav Khetarpal 11 Juli 2021
  1. Verwenden Sie Shallow Copy, um ein Objekt in Python zu kopieren
  2. Verwenden Sie Deep Copy, um ein Objekt in Python zu kopieren
Python-Objekt kopieren

In Python haben die Zuweisungsanweisungen nicht die Möglichkeit, Objekte zu kopieren, sondern erzeugen nur eine neue Variable, die die Referenz auf die des ursprünglichen Objekts teilt.

Das Kopieren ist bei der Programmierung sehr nützlich und wird hauptsächlich benötigt, um den Code einer Kopie zu bearbeiten, ohne die andere zu beschädigen.

In diesem Tutorial werden verschiedene Methoden zum Kopieren eines Objekts in Python erläutert.

Verwenden Sie Shallow Copy, um ein Objekt in Python zu kopieren

Das Modul copy muss importiert werden, um den flachen Kopiervorgang zu verwenden. Das Modul copy bietet den Programmierern die Möglichkeit, generische Deep- und Shallow-Copy-Operationen zu verwenden.

Eine flache Kopie erzeugt im Grunde ein neues Sammelobjekt, das die Referenzen der untergeordneten Objekte speichert, die in den ursprünglichen Elementen gefunden wurden. Dieser Vorgang ist nicht rekursiv und erstellt daher keine Kopien der untergeordneten Objekte.

Wenn ein flacher Kopiervorgang auftritt, wird eine Referenz auf das neue Objekt kopiert. Das bedeutet, dass, wenn an der Kopie des Objekts Änderungen vorgenommen werden, diese Änderungen auch im Originalobjekt widergespiegelt werden.

Der folgende Code verwendet die Operation Shallow copy, um ein Objekt in Python zu kopieren.

import copy

# the original list
ol = [2, 4, [1, 8], 6, 8]

# using copy to shallow copy
nl = copy.copy(ol)

print("Original list before shallow copy")
for x in range(0, len(ol)):
    print(ol[x], end=" ")

print("\r")

# modfying the new list
nl[2][0] = 9

print("Original list after shallow copy")
for x in range(0, len(ol)):
    print(ol[x], end=" ")

Ausgabe:

Original list before shallow copy
2 4 [1, 8] 6 8 
Original list after shallow copy
2 4 [9, 8] 6 8

Wie bereits erwähnt, werden bei diesem Vorgang keine Kopien des untergeordneten Prozesses erstellt. Daher kann gesagt werden, dass flache Kopien nicht vollständig eigenständig sind und vom Originalobjekt abhängig sind.

Verwenden Sie Deep Copy, um ein Objekt in Python zu kopieren

Wir müssen das Modul copy in den Python-Code importieren, um sowohl die Deep- als auch die Shallow-Copy-Operationen zu verwenden.

Beim Deep-Copy-Vorgang findet der Kopiervorgang immer rekursiv statt. Der Deep-Copy-Vorgang erstellt zuerst ein neues Sammelobjekt und fügt dann Kopien der untergeordneten Objekte hinzu, die in den Originalelementen gefunden wurden.

Grundsätzlich wird beim deep copy-Verfahren eine Kopie des Originalobjekts an das neue Sammelobjekt übergeben. Wenn Änderungen an der Kopie des Objekts vorgenommen werden, werden diese Änderungen daher nicht im ursprünglichen Objekt widergespiegelt. Um diese Deep-Copy-Operation zu implementieren, verwenden wir die Funktion deepcopy().

Der folgende Code verwendet die Funktion deepcopy(), um die Deep-Copy-Operation in Python zu implementieren.

import copy

# original list
ol = [2, 4, [1, 8], 6, 8]

# use deepcopy() to deep copy
nl = copy.deepcopy(ol)

# original elements of list
print("Original list before deep copying")
for x in range(0, len(ol)):
    print(ol[x], end=" ")

print("\r")

# adding and element to new list
nl[2][0] = 9

# The second list after changes
print("The new list after modifications ")
for x in range(0, len(ol)):
    print(nl[x], end=" ")

print("\r")

print("Original list after deep copying")
for x in range(0, len(ol)):
    print(ol[x], end=" ")

Ausgabe:

Original list before deep copying
2 4 [1, 8] 6 8 
The new list after modifications 
2 4 [9, 8] 6 8 
Original list after deep copying
2 4 [1, 8] 6 8 

Wie in den obigen Sätzen diktiert, kann eine Deep Copy die Kindobjekte rekursiv klonen, was bedeutet, dass sie unabhängig ist und nicht vom Originalobjekt abhängt.

Der einzige Nachteil beim Erstellen eines tiefen Kopiervorgangs besteht darin, dass er vergleichsweise langsamer ist und mehr Zeit in Anspruch nimmt als ein flacher Kopiervorgang.

Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

Verwandter Artikel - Python Object