Comprendre la copie superficielle
Quand en créant une copie superficielle d'un dictionnaire, l'objet dictionnaire n'est pas entièrement copié. Au lieu de cela, une nouvelle référence à l'objet d'origine est créée. Cela signifie que toutes les modifications apportées à la copie superficielle seront également reflétées dans le dictionnaire d'origine.
Exemple : Dictionnaire
Considérons l'exemple suivant :
original = dict(a=1, b=2) new = original.copy() new.update({'c': 3})
Dans ce cas, nouveau est une copie superficielle de l'original. Lorsque new est mis à jour avec {'c': 3}, le dictionnaire d'origine reste inchangé car l'original et le nouveau font référence au même objet sous-jacent.
Contraste avec la copie superficielle dans les listes
Les listes se comportent différemment lorsqu'elles sont copiées superficiellement. Lors de la création d'une copie superficielle d'une liste, une nouvelle référence à l'objet de liste sous-jacent est créée. Cependant, toute modification apportée à la copie superficielle n'affecte pas la liste d'origine, car les listes sont des objets mutables qui peuvent être modifiés indépendamment.
Comprendre la copie profonde
Contrairement à la copie superficielle la copie, la copie approfondie crée une nouvelle copie indépendante de l'objet original. Cela signifie que toute modification apportée à la copie complète n'affectera pas l'objet d'origine.
Solution
Pour mettre à jour le dictionnaire d'origine, il est nécessaire de créer une copie complète au lieu d'une copie superficielle. Le code suivant utilise copy.deepcopy() pour créer une copie complète :
import copy new = copy.deepcopy(original) new.update({'c': 3})
Maintenant, l'original reste intact tandis que le nouveau a les valeurs mises à jour.
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!