Maison >développement back-end >Tutoriel Python >L'affectation Python crée-t-elle des copies ou des références à des objets ?
Problème :
Le comportement d'affectation de Python peut prêter à confusion lorsque vous travaillez avec des objets comme dictionnaires. Considérez le code suivant :
dict_a = dict_b = dict_c = {} dict_c['hello'] = 'goodbye' print(dict_a) print(dict_b) print(dict_c)
Sortie attendue :
{} {} {'hello': 'goodbye'}
Sortie réelle :
{'hello': 'goodbye'} {'hello': 'goodbye'} {'hello': 'goodbye'}
Explication :
Les variables Python font référence aux objets en mémoire. Lorsque vous attribuez dict_a = dict_b, vous ne copiez pas l'objet dictionnaire lui-même mais attribuez plutôt une référence à la même adresse mémoire que dict_b. Cela signifie que les modifications apportées à un dictionnaire affecteront les trois variables puisqu'elles pointent vers le même objet sous-jacent.
Solution :
Pour créer une copie fidèle d'un objet en Python, vous devez utiliser les fonctions copy ou copy.deepcopy. Le code suivant créera des copies indépendantes du dictionnaire original :
dict_a = dict_b.copy() # Shallow copy dict_a = copy.deepcopy(dict_b) # Deep copy
En utilisant ces fonctions, vous pouvez vous assurer que les modifications apportées à un dictionnaire n'affectent pas les autres.
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!