Tutoriel de copy ( )
PRESENTATION DU MODULE COPY.
Le module copy permet de créer des copies superficielles ou récursives d'objet, distingues de leur ancêtres.
copy est un module de la bibliothèque standard de Python 3. Il est donc toujours disponible.
Dans Python, tout étant objet, le procédé d'affectation (variable = valeur) ne créé pas de nouveau objet avec une valeur égale, mais un nouveau lien vers l'objet désigné par la valeur. Et par conséquent, tout changement de valeur modifie simultanément les deux variables.
Si l'on copie un objet-collection muable (list ( ), dict ( ), ... ) ou contenant des éléments objets-collection muables, par exemple une list ( ) muable dans un tuple ( ) non muable, il est souvent souhaitable que les deux variables ne soient plus liées après la création de la nouvelle variable.
Bien qu'il existe des moyens de programmation permettant de dissocier deux variables après une copie, les méthodes de ce module permettent une copie profonde d'un objet-collection de façon rapide et sûr.
La divergence entre une copie superficielle et une copie récursive n'est pertinente que pour les séquences contenant eux-même des objets collection tel que des list ( ) ou des tuple ( ) :
- une copie superficielle conserve les références aux séquences trouvées dans l'objet référence ;
- une copie récursive créé aussi de nouveaux objets pour aux séquences trouvées dans l'objet référence.
Donc, si l'objet à copier contient une ou des séquences, la modifications de la séquence dans l'objet d'origine :
- modifiera aussi cette séquence dans une copie superficielle ;
- ne modifiera pas la nouvelle séquence dans une copie récursive.
import copy
LST_Externe = [ 4 , "D" ]
LST_Original = [ 1 , 2 , "A" , "B" , [ 3 , "C" ] , LST_Externe ]
LST_Superficiel = copy.copy ( LST_Original )
LST_Recurive = copy.deepcopy ( LST_Original )
print ( "Avant modifications." )
print ( "Liste à inclure .... : " , LST_Externe )
print ( "Liste test ......... : " , LST_Original )
print ( "Copie superficielle : " , LST_Superficiel )
print ( "Liste récursive .... : " , LST_Recurive , "\n\n" )
LST_Externe = [ 5 , "E" , True ]
LST_Original = [ "A" , "B" , 1 , 2 , [ "C" , 3 , False ] , LST_Externe ]
print ( "Après modifications." )
print ( "Liste à inclure .... : " , LST_Externe )
print ( "Liste test ......... : " , LST_Original )
print ( "Copie superficielle : " , LST_Superficiel )
print ( "Liste récursive .... : " , LST_Recurive )
LISTE DES METHODES DU MODULE COPY.
copy ( ) : retourne une copie superficielle d'un objet.
deepcopy ( ) : retourne une copie récursive d'un objet.
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la LOGITHEQUE de MON PYTHON PAS A PAS
vous trouvez des suggestions de projets simples et classiques pour
ooo
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
ooo
la programmation récréative avec le langage PYTHON 3
avec un exemple de résolution à télécharger pour vous inspirer.