Sobes.tech
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.