"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment créer des copies d'objets véritablement indépendantes en Python ?

Comment créer des copies d'objets véritablement indépendantes en Python ?

Publié le 2024-11-16
Parcourir:972

How to Create Truly Independent Copies of Objects in Python?

Duplication d'objets en Python : un guide complet

La création de copies d'objets est une tâche fondamentale dans la programmation Python, en particulier lorsqu'il s'agit de données complexes. structures. Cet article explore les subtilités de la copie d'objets en Python, en se concentrant particulièrement sur la création d'objets indépendants qui ne sont pas affectés par les modifications apportées à l'original.

Copie superficielle et approfondie

En Python, il existe deux méthodes principales pour copier des objets : la copie superficielle et la copie approfondie. La copie superficielle crée un nouvel objet qui fait référence aux mêmes champs immuables (par exemple, des entiers, des chaînes) que l'original, mais crée de nouvelles copies de champs mutables (par exemple, des listes, des dictionnaires).

Par exemple, considérez ce qui suit extrait de code :

original_list = [1, 2, 3]
new_list = original_list[:]  # Shallow copy

Bien que new_list et original_list semblent être des objets distincts, toute modification apportée à une liste sera reflétée dans l'autre, car elles font toutes deux référence aux mêmes données sous-jacentes.

Création d'objets entièrement indépendants

Pour créer des objets véritablement indépendants, nous devons recourir à la copie approfondie. Cela implique de créer une nouvelle copie de chaque champ, y compris les structures mutables imbriquées. La fonction copy.deepcopy() de Python fournit cette fonctionnalité.

Modifions notre exemple précédent :

import copy

original_list = [1, 2, [4, 5]]
new_list = copy.deepcopy(original_list)

Maintenant, si nous apportons une modification à new_list, cela n'affectera pas original_list :

new_list[2].append(6)
print(original_list)  # Output: [1, 2, [4, 5]]
print(new_list)       # Output: [1, 2, [4, 5, 6]]

Conclusion

En tirant parti de la fonction copy.deepcopy(), les programmeurs peut créer des copies d'objets totalement indépendantes, garantissant que les modifications apportées à l'un n'affectent pas l'autre. Comprendre la différence entre la copie superficielle et profonde est crucial pour une manipulation efficace des objets en Python.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3