Python Deep Copy

Python Deep Copy
Vous avez peut-être parcouru le concept de copie de fichiers et de dossiers d'un endroit à un autre dans votre système d'exploitation spécifique. Cette opération est assez facile car elle ne vous oblige pas à effectuer un code. Tout comme les systèmes de fichiers, la programmation prend également en charge la copie de différents objets. Le langage Python nous permet également de copier un objet à un autre en utilisant une copie profonde, une copie superficielle et des méthodes d'attribution. Une copie profonde est le type de copie dans laquelle les propriétés d'un objet réplique n'utilisent pas de références similaires à ce que les propriétés d'un objet d'origine occupe.

En d'autres termes, la copie d'objet nouvellement fabriquée occupera séparément ses sources et ses propriétés et sera complètement indépendante de l'objet d'origine. Dans ce guide aujourd'hui, nous discuterons de l'utilisation d'une copie profonde dans le code Python pour copier un objet dans le même type d'un autre objet. Avant cela, nous devons installer la nouvelle version de Python sur notre système Linux afin que nous puissions implémenter des exemples de Python. Utilisez l'instruction sous-traitant «APT» avec le mot-clé «Python3» pour le configurer entièrement. Ajoutez le mot de passe du compte système et appuyez sur la clé «entrez» pour la compléter.

Vous devez ouvrir rapidement votre shell Linux avec le «Ctrl + Alt + T.«Nous allons partir de la fabrication d'une« copie.fichier py ”python. Nous avons utilisé la commande Linux «Touch» sur le shell de ligne de commande. Cela sera créé en 3 secondes, et nous pouvons l'ouvrir avec n'importe quel éditeur comme Vim, Text et Nano. Nous ouvrons notre nouveau fichier Python dans l'éditeur «GNU Nano» pour créer le document Python suivant la requête affiché.

Exemple 01: Copie simple / superficielle à l'aide de l'opérateur d'affectation

Nous commencerons notre premier exemple de copie en utilisant la méthode simple qui est assez populaire parmi les différents développeurs. Cette méthode utilise l'opérateur d'attribution simple «=» pour copier l'objet à un autre. Il n'y aura aucune utilisation de la méthode intégrée pour copier un objet. Une fois le fichier python vide lancé dans le nano, nous avons ajouté le support de python à sa première ligne. Après cela, la déclaration d'impression indique que l'objet sera affiché avant toute mise à jour. Une liste «L1» est initialisée avec des numéros et imprimé à l'aide de l'instruction PRINT. Nous avons copié le contenu de la liste L1 sur une autre liste L2 en utilisant l'opérateur d'affectation «=."Les 2 prochaines instructions d'impression affichent la deuxième liste après la copie, et le troisième montre que nous allons effectuer des mises à jour. Nous avons remplacé la valeur à l'index 5 de la liste 2 par une autre valeur. Après cela, nous avons affiché les deux listes, L1 et L2, encore une fois. Les 2 dernières instructions d'impression affichent les «ID» des deux listes séparément. Enregistrez le code avec Ctrl + S et sortez avec Ctrl + X.

Nous avons exécuté notre fichier Python «Copiez.py ”avec python3. Les deux listes ont été affichées avant la mise à jour, je.e., les mêmes valeurs. Après avoir ajouté de la valeur à l'index 5 de la liste 2, nous avons à nouveau imprimé les deux listes. L'affichage des deux listes montre que le changement dans la liste des répliques met à jour la liste originale, je.e., Les mêmes listes mises à jour affichées. De plus, les identifiants des deux listes sont les mêmes, ce qui signifie que les deux utilisent les mêmes ressources via des références.

Exemple 02: copie profonde

Pour utiliser le concept de copie profonde dans Python, nous devons utiliser le module «Copier» dans notre fichier de code. Ce module de copie utilisera ses fonctions intégrées pour effectuer la copie profonde dans Python. Donc, nous avons un peu mis à jour notre ancien fichier python. Ajout de l'extension Python et importé le module «Copie» à l'aide du mot-clé «Importer.«Utilisez un nom de fichier différent et non comme« Copier.py ”car il sera problématique et faire des erreurs. Nous avons initialisé une liste L1 avec différentes valeurs numériques et de chaîne après que la déclaration d'impression indique que nous effectuerons une copie profonde.

La liste a été affichée à l'aide de la clause Imprime. Pour utiliser la fonction Deep Copy () pour copier la liste L1 pour répertorier L2, nous devons utiliser le module «Copier» comme mot clé avec un point avant l'appel de fonction. Dans les paramètres de la fonction DeepCopy (), nous avons pris la liste L1. L'opérateur d'affectation est utilisé pour ajouter la copie dans la liste L2. Après avoir effectué une copie profonde, la déclaration d'impression est à nouveau utilisée pour afficher la liste L2 sur le shell. Après tout cela, nous avons ajouté deux valeurs dans la liste L1 en utilisant la fonction annexée () de Python. Les 2 dernières instructions d'impression sont utilisées pour afficher à nouveau le contenu des deux listes: L1 et L2.

Après avoir exécuté ce code mis à jour, nous avons affiché les deux listes au début après avoir effectué la copie profonde. Tout en ajoutant 2 nouvelles valeurs à la première liste, nous avons affiché à nouveau les deux listes. L'affichage des deux listes montre que la mise à jour dans la liste originale ne provoque aucun changement dans la liste2. Cela indique que la copie profonde créera des ressources complètement différentes de la source de l'objet d'origine à utiliser pour une réplique. C'est pourquoi la mise à jour de l'un ne change pas l'autre.

Exemple 03: copie profonde vs copie superficielle

Pour démontrer la copie profonde en profondeur, nous le comparerons avec le concept de copie superficielle. Nous avons donc mis à jour notre code et initialisé une liste imbriquée L1 après l'importation du module «Copier», I.e., liste dans une liste. Pour effectuer une copie superficielle, nous utilisons la fonction Copy () du module «Copier» et utilisant la liste L1 pour faire une nouvelle liste L2.

Les deux listes ont été imprimées à l'aide de clauses d'impression. Nous avons mis à jour la valeur de la liste 2 à l'index 1 de sa liste Index 1. Utilisé à nouveau les instructions d'impression pour voir les modifications dans les deux listes.

Nous avons affiché la liste L1 et L2 après une copie superficielle. Sur la mise à jour de la liste L2, nous avons à nouveau affiché les deux listes et avons constaté qu'un changement dans l'un fait changer l'autre.

Nous avons à nouveau mis à jour le code et changé le texte dans la première instruction d'impression en «copie profonde.”Effectué la copie profonde à l'aide de la fonction DeepCopy () du module« Copier »et copié le contenu d'une liste L1 à la nouvelle liste L2. Imprimé les deux listes sur des lignes séparées. A effectué la mise à jour dans la liste L2 en modifiant la valeur à l'index 1 de sa liste Index 1 et affiche à nouveau les deux listes.

En utilisant la fonction DeepCopy (), nous avons copié la liste L1 sur la nouvelle liste L2. Après la mise à jour, nous savons que le changement dans un objet imbriqué n'affecte pas l'autre objet.

Conclusion:

Il s'agit d'utiliser le concept de copie profonde pour créer une copie profonde d'un objet dans Python en utilisant le module «Copier» de Python. Nous avons discuté de ce concept à l'aide de la fonction DeepCopy () et discuté de la méthode de copie simple de Python avant. De plus, nous avons comparé le concept de copie profonde avec une copie peu profonde dans l'exemple Python. Cela a été fait pour le rendre plus clair.