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
167 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!

source:php.cn
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