Shallow Copy
Una copia shallow costruisce un nuovo oggetto composto e quindi (per quanto possibile) inserisce riferimenti agli oggetti trovati nell’originale.
Ci sono tre modi diversi per creare una copia superficiale:
Qui, tutti gli elenchi contengono gli stessi valori dell’elenco originale:
>>> print(nums == m1 == m2 == m3)
True
Tuttavia, l’indirizzo di memoria di ciascuno è diverso.,
Ciò significa che questa volta, l’oggetto di ogni lista ha il proprio indirizzo di memoria indipendente.
Ora passiamo alla parte più interessante. Se l’elenco originale è un oggetto composto (ad esempio un elenco di elenchi), dopo una copia superficiale, i nuovi elementi dell’elenco fanno ancora riferimento agli elementi originali.
Quindi, se modifichi gli elementi mutabili come gli elenchi, le modifiche si rifletteranno sugli elementi originali., Vediamo il seguente esempio per capire meglio:
Come si può vedere nell’esempio di cui sopra, mentre si sta modificando la lista interna elementi nel nuovo elenco è aggiornato nella lista originale anche, perché a
e b
ancora lo stesso indirizzo di memoria (la lista originale).
Quindi, la nuova lista b
ha un proprio indirizzo di memoria ma i suoi elementi no., Questo perché, in shallow copy, invece di copiare gli elementi della lista sul nuovo oggetto, copia semplicemente i riferimenti ai loro indirizzi di memoria.
Pertanto, mentre stiamo apportando modifiche all’oggetto originale, si riflette negli oggetti copiati e viceversa.
Questa è una caratteristica di una copia superficiale.