En Python, si vous souhaitez copier un objet, l'opérateur d'affectation ne servira à rien. Il crée une liaison entre la cible et l'objet, c'est-à-dire qu'il ne crée jamais de nouvel objet. Il crée simplement une nouvelle variable qui partage la référence d'objet d'origine. Pour résoudre ce problème, le module de réplication est fourni. Ce module comporte des opérations communes de copie superficielle et de copie profonde.
La copie superficielle construit un nouvel objet composite puis insère la référence dans l'objet d'origine. Il copie des objets en utilisant −
copy.copy(x) Return a shallow copy of x.
La copie profonde construit un nouvel objet composite, puis y insère de manière récursive des copies des objets de l'objet d'origine. Il copie les objets en utilisant les méthodes suivantes −
copy.deepcopy(x[, memo]) Return a deep copy of x. Here, memo is a dictionary of objects already copied during the current copying pass;
Les problèmes suivants peuvent survenir lors de l'utilisation des opérations de copie complète -
La récursion peut conduire à des boucles récursives.
Étant donné que la copie profonde copie tout, il est possible d'en copier trop, comme les données que vous souhaitez partager entre les répliques.
Cependant, la méthode deepcopy() évite ces problèmes. Voyons comment −
Conserve un dictionnaire mémo des objets copiés pendant le processus de copie en cours
Autoriser les classes définies par l'utilisateur à remplacer les opérations de copie ou les ensembles de composants copiés.
Pour installer le module de copie, utilisez pip −
pip install copy
Utilisez le module de copie après l'installation −
import copy
Nous utiliserons une copie superficielle pour copier l'objet. Il crée un nouvel objet pour stocker une référence à l'élément d'origine. Voyons un exemple −
import copy # Create a List myList = [[5, 10], [15, 20]] # Display the list print("List = ", myList) # Shallow Copy myList2 = copy.copy(myList) # Display the copy of the List print("New copy of the list =", myList2)
List = [[5, 10], [15, 20]] New copy of the list = [[5, 10], [15, 20]]
Dans l'exemple ci-dessus, nous avons réalisé une copie superficielle de la liste en utilisant la méthode copy().
Nous utiliserons la méthode deepcopy() pour copier en profondeur un objet. Une copie complète crée également un nouvel objet. Voyons un exemple −
import copy # Create a List myList = [[5, 10], [15, 20]] # Display the list print("List = ", myList) # Deep Copy myList2 = copy.deepcopy(myList) # Display the copy of the List print("New copy of the list =", myList2)
List = [[5, 10], [15, 20]] New copy of the list = [[5, 10], [15, 20]]
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!