Maison  >  Article  >  développement back-end  >  Quelle est la différence entre la copie superficielle et la copie approfondie en Python ?

Quelle est la différence entre la copie superficielle et la copie approfondie en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-07 05:22:03605parcourir

How do Shallow and Deep Copying Differ in Python?

Copier des objets en Python

Créer une copie indépendante d'un objet est une tâche courante en programmation. En Python, il existe deux manières principales de copier un objet : la copie superficielle et la copie approfondie.

Copie superficielle

Le mécanisme de copie par défaut de Python est la copie superficielle. Cela signifie qu'un nouvel objet est créé avec une référence aux mêmes champs que l'objet d'origine. Toute modification apportée aux champs du nouvel objet sera également reflétée dans l'objet d'origine.

Copie approfondie

La copie approfondie, en revanche, crée un nouveau objet avec des copies séparées des champs de l’objet d’origine. Cela signifie que toute modification apportée aux champs du nouvel objet n'affectera pas l'objet d'origine.

Pour obtenir une copie entièrement indépendante et approfondie d'un objet en Python, vous pouvez utiliser la copie Fonction .deepcopy(). Voici un exemple :

<code class="python">import copy

# Original object
obj = {
    "name": "Alice",
    "age": 20
}

# Create a shallow copy
shallow_copy = obj

# Create a deep copy
deep_copy = copy.deepcopy(obj)

# Modify the shallow copy
shallow_copy["name"] = "Bob"

# Print the original and deep copy
print(obj)  # Output: {'name': 'Bob', 'age': 20}
print(deep_copy)  # Output: {'name': 'Alice', 'age': 20}</code>

Comme vous pouvez le voir, le deep_copy conserve les valeurs d'origine de l'objet, tandis que leshallow_copy est affecté par les modifications apportées à l'objet d'origine.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn