Junior — Middle
Quelle est la différence entre la copie profonde et la copie superficielle d'objets en Python, et quand doit-on l'utiliser?
sobes.tech IA
Réponse de l'IA
En Python, la copie superficielle (shallow copy) crée un nouvel objet, mais les objets imbriqués à l’intérieur ne sont pas copiés, ils sont simplement référencés. La copie profonde (deep copy) crée un nouvel objet et copie récursivement tous les objets imbriqués, créant une structure totalement indépendante.
Quand l’utiliser :
- La copie superficielle convient si les objets imbriqués ne seront pas modifiés ou si les modifications des objets imbriqués doivent se refléter dans les deux copies.
- La copie profonde est nécessaire lorsque vous avez besoin d’une copie totalement indépendante de l’objet avec tous ses éléments imbriqués, pour que les modifications dans la copie n’affectent pas l’original.
Exemple :
import copy
original = [[1, 2], [3, 4]]
shallow = copy.copy(original)
deep = copy.deepcopy(original)
shallow[0][0] = 100
print(original) # [[100, 2], [3, 4]] - l’original a changé
deep[1][1] = 200
print(original) # [[100, 2], [3, 4]] - l’original n’a pas changé
Ainsi, le choix entre copie superficielle et profonde dépend des exigences d’indépendance de la copie.