Python Deep Copy

Python Deep Copy
Potresti aver esaminato il concetto di copia di file e cartelle da un posto all'altro all'interno del tuo sistema operativo specifico. Questa operazione è abbastanza semplice in quanto non richiede di eseguire un po 'di codice. Proprio come i file system, la programmazione supporta anche la copia di oggetti diversi. Python Language ci consente anche di copiare un oggetto a un altro usando i metodi di copia profonda, copia superficiale e assegnazione. Una copia profonda è il tipo di copia in cui le proprietà di un oggetto replica non usano riferimenti simili come le proprietà di un oggetto originale occupano.

In altre parole, la copia dell'oggetto di nuova realizzazione occuperà separatamente le sue fonti e le sue proprietà e sarà completamente indipendente dall'oggetto originale. All'interno di questa guida oggi, discuteremo dell'uso della copia profonda nel codice Python per copiare un oggetto sullo stesso tipo di un altro oggetto. Prima di allora, dobbiamo installare la nuova versione di Python sul nostro sistema Linux in modo da poter implementare esempi di Python. Usa le istruzioni "Apt" sotto la parola chiave "Python3" per configurarla completamente. Aggiungi la password dell'account di sistema e premi la chiave "Immettere" per completarla.

È necessario aprire rapidamente la shell Linux con "Ctrl+Alt+T."Inizieremo dalla realizzazione di una" copia.Py ”Python File. Abbiamo utilizzato il comando Linux "Touch" sulla shell della riga di comando. Questo verrà creato in 3 secondi e possiamo aprirlo con qualsiasi editor come Vim, Testo e Nano. Stiamo aprendo il nostro nuovo file Python nell'editor "Gnu Nano" per creare il documento Python seguendo la query a grandezzatura mostrata.

Esempio 01: copia semplice/superficiale usando l'operatore di assegnazione

Inizieremo il nostro primo esempio di copia usando il metodo semplice che è abbastanza popolare tra i diversi sviluppatori. Questo metodo utilizza il semplice operatore di assegnazione "=" per copiare l'oggetto su un altro. Non ci sarà alcun uso di alcun metodo integrato per copiare un oggetto. Dopo che il file Python vuoto è stato lanciato nel nano, abbiamo aggiunto il supporto di Python alla sua prima riga. Successivamente, l'istruzione di stampa afferma che l'oggetto verrà visualizzato prima di qualsiasi aggiornamento. Un elenco "L1" è inizializzato con i numeri e stampato utilizzando l'istruzione di stampa. Abbiamo copiato il contenuto dell'elenco L1 in un altro elenco L2 utilizzando l'operatore di assegnazione “=."Le successive 2 istruzioni di stampa visualizzano il secondo elenco dopo la copia e il terzo mostra che eseguiremo aggiornamenti. Abbiamo sostituito il valore all'indice 5 dell'elenco 2 con un altro valore. Dopodiché, abbiamo mostrato di nuovo entrambi gli elenchi, L1 e L2. Le ultime 2 istruzioni di stampa visualizzano gli "ID" di entrambi gli elenchi separatamente. Salva il codice con Ctrl+S ed esci con Ctrl+X.

Abbiamo eseguito il nostro file Python “Copia.Py ”con Python3. Entrambi gli elenchi sono stati visualizzati prima dell'aggiornamento, io.e., gli stessi valori. Dopo aver aggiunto valore all'indice 5 dell'elenco 2, abbiamo stampato di nuovo entrambi gli elenchi. La visualizzazione di entrambi gli elenchi mostra che la modifica nell'elenco di repliche sta aggiornando l'elenco originale, i.e., gli stessi elenchi aggiornati visualizzati. Inoltre, gli ID di entrambi gli elenchi sono gli stessi, il che significa che entrambi utilizzano le stesse risorse tramite riferimenti.

Esempio 02: copia profonda

Per utilizzare il concetto di copia profonda in Python, dobbiamo utilizzare il modulo "copia" nel nostro file di codice. Questo modulo di copia utilizzerà le sue funzioni integrate per eseguire la copia profonda in Python. Quindi, abbiamo aggiornato un po 'il nostro vecchio file Python. Aggiunto l'estensione Python e importato il modulo "Copia" utilizzando la parola chiave "Importa."Usa un nome di file diverso e non come" Copia.py "in quanto sarà problematico e commetterà errori. Abbiamo inizializzato un elenco L1 con diversi valori numerici e stringa dopo che l'istruzione di stampa afferma che eseguiremo una copia profonda.

L'elenco è stato visualizzato utilizzando la clausola di stampa. Per utilizzare la funzione di copia Deep () per copiare l'elenco L1 per elencare L2, dobbiamo utilizzare il modulo "Copia" come parola chiave con un punto prima della chiamata di funzione. All'interno dei parametri della funzione DeepCopy (), abbiamo preso la lista L1. L'operatore di assegnazione viene utilizzato per aggiungere la copia nell'elenco L2. Dopo aver eseguito una copia profonda, l'istruzione di stampa viene nuovamente utilizzata per visualizzare l'elenco L2 sulla shell. Dopo tutto ciò, abbiamo aggiunto due valori nell'elenco L1 utilizzando la funzione Append () di Python. Le ultime 2 istruzioni di stampa vengono utilizzate per visualizzare il contenuto di entrambi gli elenchi: L1 e L2.

Dopo aver eseguito questo codice aggiornato, abbiamo visualizzato i due elenchi all'inizio dopo aver eseguito la copia profonda. Mentre aggiungi 2 nuovi valori al primo elenco, abbiamo visualizzato di nuovo entrambi gli elenchi. La visualizzazione di entrambi gli elenchi mostra che l'aggiornamento nell'elenco originale non causa alcuna modifica in List2. Ciò indica che la copia profonda creerà risorse completamente diverse dalla fonte dell'oggetto originale da utilizzare per una replica. Ecco perché l'aggiornamento in uno non cambia l'altro.

Esempio 03: copia profonda vs copia superficiale

Per dimostrare in modo approfondito la copia profonda, lo confronteremo con il concetto di copia superficiale. Quindi, abbiamo aggiornato il nostro codice e inizializzato un elenco nidificato L1 dopo aver importato il modulo "copia", i.e., Elenco all'interno di un elenco. Per eseguire una copia superficiale, abbiamo utilizzato la funzione Copy () del modulo "Copia" e utilizzando l'elenco L1 per creare un nuovo elenco L2.

Entrambi gli elenchi sono stati stampati utilizzando le clausole di stampa. Abbiamo aggiornato il valore dell'elenco 2 all'indice 1 del suo elenco indice 1. Utilizzo di nuovo le istruzioni di stampa per visualizzare le modifiche in entrambi gli elenchi.

Abbiamo visualizzato l'elenco L1 e L2 dopo una copia superficiale. Nell'elenco di aggiornamento L2, abbiamo nuovamente visualizzato entrambi gli elenchi e abbiamo scoperto che una modifica in uno sta facendo cambiare l'altro.

Abbiamo aggiornato nuovamente il codice e modificato il testo nella prima istruzione di stampa in "Deep Copy."Eseguito la copia Deep usando la funzione DeepCopy () del modulo" Copia "e copiato il contenuto di un elenco L1 al nuovo elenco L2. Stampato in entrambe le liste in righe separate. Eseguito l'aggiornamento nell'elenco L2 modificando il valore all'indice 1 del suo elenco indice 1 e visualizzato di nuovo entrambi gli elenchi.

Usando la funzione DeepCopy (), abbiamo copiato l'elenco L1 al nuovo elenco L2. Dopo l'aggiornamento, sappiamo che il cambiamento in un oggetto nidificato non influisce sull'altro oggetto.

Conclusione:

Si tratta di usare il concetto di copia profonda per creare una copia profonda di un oggetto in Python usando il modulo "copia" di Python. Abbiamo discusso a fondo questo concetto usando la funzione DeepCopy () e abbiamo discusso del semplice metodo di copia di Python prima. Inoltre, abbiamo confrontato il concetto di copia profonda con una copia superficiale nell'esempio Python. Questo è stato fatto per renderlo più chiaro.