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)
De façon inattendue, ce code produit ce qui suit sortie :
{'hello': 'goodbye'} {'hello': 'goodbye'} {'hello': 'goodbye'}
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()
Utilisation de copy.deepcopy() :
import copy dict_a = copy.deepcopy(dict_b) dict_c = copy.deepcopy(dict_b)
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!