Objekte in Python duplizieren: Eine umfassende Anleitung
Das Erstellen von Objektkopien ist eine grundlegende Aufgabe in der Python-Programmierung, insbesondere beim Umgang mit komplexen Daten Strukturen. Dieser Artikel befasst sich mit den Feinheiten des Objektkopierens in Python und konzentriert sich insbesondere auf die Erstellung unabhängiger Objekte, die von am Original vorgenommenen Änderungen nicht betroffen sind.
Flaches und tiefes Kopieren
In Python gibt es zwei Hauptmethoden zum Kopieren von Objekten: flaches Kopieren und tiefes Kopieren. Durch flaches Kopieren wird ein neues Objekt erstellt, das auf dieselben unveränderlichen Felder (z. B. Ganzzahlen, Zeichenfolgen) wie das Original verweist, jedoch neue Kopien veränderlicher Felder (z. B. Listen, Wörterbücher) erstellt.
Bedenken Sie beispielsweise Folgendes Codeausschnitt:
original_list = [1, 2, 3]
new_list = original_list[:] # Shallow copy
Während new_list und original_list als separate Objekte erscheinen, werden alle an einer Liste vorgenommenen Änderungen in der anderen widergespiegelt, da beide auf dieselben zugrunde liegenden Daten verweisen.
Völlig unabhängige Objekte erstellen
Um wirklich unabhängige Objekte zu erstellen, müssen wir auf tiefes Kopieren zurückgreifen. Dazu gehört die Erstellung einer neuen Kopie jedes Feldes, einschließlich verschachtelter veränderlicher Strukturen. Die Funktion copy.deepcopy() von Python bietet diese Funktionalität.
Ändern wir unser vorheriges Beispiel:
import copy
original_list = [1, 2, [4, 5]]
new_list = copy.deepcopy(original_list)
Wenn wir nun eine Änderung an new_list vornehmen, hat dies keine Auswirkungen auf original_list:
new_list[2].append(6)
print(original_list) # Output: [1, 2, [4, 5]]
print(new_list) # Output: [1, 2, [4, 5, 6]]
Schlussfolgerung
Durch die Nutzung der Funktion copy.deepcopy() können Programmierer kann völlig unabhängige Kopien von Objekten erstellen und so sicherstellen, dass Änderungen an einem Objekt keine Auswirkungen auf das andere haben. Das Verständnis des Unterschieds zwischen flachem und tiefem Kopieren ist für eine effektive Objektmanipulation in Python von entscheidender Bedeutung.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3