Beim Lesen der Dokumentation für dict.copy()
heißt es, dass eine flache Kopie des Wörterbuchs erstellt wird. Gleiches gilt für das Buch, dem ich folge (Beazleys Python-Referenz), in dem es heißt:
Die Methode m.copy () erstellt eine flache Kopie der in einem Zuordnungsobjekt enthaltenen Elemente und platziert sie in einem neuen Zuordnungsobjekt.
Bedenken Sie:
>>> original = dict(a=1, b=2)
>>> new = original.copy()
>>> new.update({'c': 3})
>>> original
{'a': 1, 'b': 2}
>>> new
{'a': 1, 'c': 3, 'b': 2}
Daher nahm ich an, dass dies den Wert von original
(und 'c': 3 hinzufügen) aktualisieren würde, auch da ich eine flache Kopie machte. Zum Beispiel, wenn Sie es für eine Liste tun:
>>> original = [1, 2, 3]
>>> new = original
>>> new.append(4)
>>> new, original
([1, 2, 3, 4], [1, 2, 3, 4])
Dies funktioniert wie erwartet.
Da beide flache Kopien sind, warum dict.copy()
funktioniert das nicht so, wie ich es erwartet habe? Oder ist mein Verständnis von flachem und tiefem Kopieren fehlerhaft?