Copie profonde et copie superficielle

En Python, l'affectation d'objet est en réalité une référence à l'objet. Lorsque vous créez un objet et l'affectez à une autre variable, Python ne copie pas l'objet, mais copie uniquement la référence à l'objet, ce que l'on appelle une copie superficielle.

En Python, afin que les deux variables ne s'affectent pas mutuellement lors des opérations d'affectation, vous pouvez utiliser la méthode deepcopy du module copy, ce que l'on appelle une copie profonde.

fonction append()

Lorsqu'un objet de type liste effectue une opération append, il ajoute en réalité une référence à l'objet.

id()Fonction : renvoie l'identifiant unique de l'objet, qui peut être comparé à l'adresse de l'objet en mémoire.

>>>alist = [] >>> num = [2] >>> alist.append( num ) >>> id( num ) == id( alist[0] ) True
Comme le montre l'exemple ci-dessus, lorsque num change (à condition que id(num) ne change pas), le contenu de alist change en conséquence. Cela entraîne souvent des conséquences inattendues. Pour éviter cela, vous pouvez utiliser une copie profonde pour y remédier :
alist.append( copy.deepcopy( num ) )

Adresse d'origine : https://blog.csdn.net/u010099495/article/details/50276833