En Python, les opérateurs d'affectation, tels que =, ne créent pas de copies d'objets. Au lieu de cela, ils font référence à des objets existants en mémoire. Ce comportement peut entraîner des conséquences inattendues, comme le démontre 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'}
Dans ce Par exemple, nous comptions créer trois dictionnaires indépendants. Cependant, le résultat montre que dict_a, dict_b et dict_c font tous référence au même objet dictionnaire. L'attribution d'une clé à dict_c modifie le dictionnaire partagé, ce qui se reflète dans les trois variables.
Pour obtenir le comportement souhaité de création de copies indépendantes, Python propose plusieurs options :
dict_a = {1: 2} dict_b = dict_a.copy() dict_b[3] = 4 print(dict_a) print(dict_b)
Sortie :
{1: 2} {1: 2, 3: 4}
import copy dict_a = {1: 2, 'nested': {3: 4}} dict_b = copy.deepcopy(dict_a) dict_b['nested'][5] = 6 print(dict_a) print(dict_b)
Sortie :
{1: 2, 'nested': {3: 4}} {1: 2, 'nested': {3: 4, 5: 6}}
En utilisant ces méthodes, il est possible de contrôler l'affectation d'objets en Python et d'empêcher les modifications involontaires des objets partagés.
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!