Maison > Article > développement back-end > La différence entre la copie profonde et superficielle en python
L'affectation d'objets en Python est en fait une référence à l'objet. Lorsqu'un objet est créé et affecté à une autre variable, Python ne copie pas l'objet, uniquement la référence à l'objet.
Copie superficielle : l'objet le plus externe lui-même est copié et les éléments internes sont simplement copiés avec une référence. Autrement dit, l'objet est copié une fois, mais les autres objets référencés dans l'objet ne sont pas copiés
Copie profonde : les éléments périphériques et internes copient l'objet lui-même, pas la référence. Autrement dit, l'objet est copié une fois et les autres objets référencés dans l'objet sont également copiés.
Les fonctions de copie profonde et superficielle
1. Réduisez l'utilisation de la mémoire
2. une copie des données originales pour empêcher que les données originales ne soient retrouvées après la modification des données.
Recommandations associées : "Tutoriel vidéo Python"
Copie superficielle (copie) : copie l'objet parent et ne copie pas les objets enfants internes de l'objet.
Deepcopy : La méthode deepcopy du module de copie copie complètement l'objet parent et ses objets enfants.
>>>a = {1: [1,2,3]} >>> b = a.copy() >>> a, b({1: [1, 2, 3]}, {1: [1, 2, 3]}) >>> a[1].append(4) >>> a, b({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})
La copie profonde nécessite l'introduction du module de copie :
>>>import copy >>> c = copy.deepcopy(a) >>> a, c({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]}) >>> a[1].append(5) >>> a, c({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})
1 b = a.copy() : Copie superficielle, a et b sont un objet indépendant, mais leurs sous-objets. pointez toujours vers l'objet unifié (est une référence).
2. b = copy.deepcopy(a) : Copie profonde, a et b copient complètement l'objet parent et ses objets enfants, et ils sont complètement indépendants.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!