Maison  >  Article  >  développement back-end  >  La différence entre la copie profonde et superficielle en python

La différence entre la copie profonde et superficielle en python

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼original
2019-06-24 14:28:203532parcourir

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.

La différence entre la copie profonde et superficielle en python

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).

La différence entre la copie profonde et superficielle en python

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.

La différence entre la copie profonde et superficielle en python

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn