Tiefe Kopie und flache Kopie

In Python ist die Objektzuweisung tatsächlich eine Referenz auf das Objekt. Wenn Sie ein Objekt erstellen und es einer anderen Variable zuweisen, kopiert Python nicht das Objekt, sondern nur die Referenz auf das Objekt, was wir als flache Kopie bezeichnen.

In Python können Sie, damit sich die beiden Variablen bei Zuweisungsoperationen nicht gegenseitig beeinflussen, die Methode deepcopy im Modul copy verwenden; dies wird als tiefe Kopie bezeichnet.

append()-Funktion

Wenn ein Objekt vom Typ Liste eine append-Operation ausführt, wird tatsächlich eine Referenz auf das Objekt angehängt.

id()Funktion: gibt die eindeutige Kennung des Objekts zurück, die mit der Adresse des Objekts im Speicher verglichen werden kann.

>>>alist = [] >>> num = [2] >>> alist.append( num ) >>> id( num ) == id( alist[0] ) True
Wie im obigen Beispiel gezeigt, ändert sich der Inhalt von alist entsprechend, wenn sich num ändert (vorausgesetzt, dass sich id(num) nicht ändert). Dies führt oft zu unerwarteten Konsequenzen. Um dies zu vermeiden, können Sie eine tiefe Kopie verwenden, um es zu lösen:
alist.append( copy.deepcopy( num ) )

Originaladresse: https://blog.csdn.net/u010099495/article/details/50276833