en python, nous avons ce qu’on appelle »deep copy »et »shallow copy », par exemple:
import copyx = copy.copy(y) # shallow copy of yx = copy.deepcopy(y) # deep copy of y
la différence entre la copie peu profonde et profonde n’est pertinente que pour les objets composés (objets qui contiennent tuple ‘et’ ByteArray ‘ou instances de classe).
– Une copie superficielle construit un nouvel objet composé, puis (dans la mesure du possible) insère *les mêmes objets* que le
original contient.,
– Une copie profonde construit un nouvel objet composé puis, récursivement,
y insère *copies* des objets trouvés dans l’original.
Notes:
1. Pour la `liste`, `dict`, `ensemble` et `bytearray`, `copier.copie « est équivalent à » liste.copie’, ‘ dict.copier », » ensemble.copiez ‘ et ‘ bytearray.copie`, respectivement.
c’est-à-dire que toutes les méthodes de classe `copy` De `list`, `dict`, `set` et `bytearray` sont des copies peu profondes.
2. Shallow copy est un algorithme de complexité « O (N) » où » N » est la longueur de l’objet composé d’origine., La copie superficielle doit allouer au moins la taille de `N` du type `PyBoject*` dans la mémoire et la boucle à attribuer.
3. Deep copy est un algorithme de complexité « O (NM) » où » N « est la longueur de l’objet composé d’origine et » M » est la longueur moyenne (en termes d’objets non composés) des éléments du composé.
4. La copie peu profonde et profonde pour les objets non composés est la même, par exemple, `int`, `float`, `str` etc.
5. `liste.copie » est la même que l’utilisation de la tranche, c’est à dire `a`