Maison > développement back-end > Tutoriel Python > Python crée-t-il des copies ou des références lors de l'attribution d'objets ?

Python crée-t-il des copies ou des références lors de l'attribution d'objets ?

DDD
Libérer: 2024-12-16 18:50:15
original
246 Les gens l'ont consulté

Does Python Create Copies or References When Assigning Objects?

Python copie-t-il les objets lors de l'affectation ?

En Python, l'affectation de variables ne crée pas de copies d'objets mais plutôt des références à ceux-ci. Ce comportement peut conduire à des résultats inattendus.

Exemple :

Considérez le code suivant :

dict_a = dict_b = dict_c = {}
dict_c['hello'] = 'goodbye'

print(dict_a)
print(dict_b)
print(dict_c)
Copier après la connexion

De façon inattendue, ce code produit ce qui suit sortie :

{'hello': 'goodbye'}
{'hello': 'goodbye'}
{'hello': 'goodbye'}
Copier après la connexion

Explication :

Lorsque vous attribuez dict_a = dict_b = dict_c = {}, vous ne créez pas trois dictionnaires distincts. Au lieu de cela, vous créez un dictionnaire et lui attribuez trois noms (références). De ce fait, toute modification apportée à l'une des références les impacte toutes.

Solution :

Pour créer des copies indépendantes d'objets, vous pouvez utiliser soit le dict Méthode .copy() ou fonction copy.deepcopy().

Utilisation dict.copy() :

dict_a = dict_b.copy()
dict_c = dict_b.copy()
Copier après la connexion

Utilisation de copy.deepcopy() :

import copy
dict_a = copy.deepcopy(dict_b)
dict_c = copy.deepcopy(dict_b)
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal