Copia profunda y superficial

En Python, la asignación de objetos es en realidad una referencia al objeto. Cuando se crea un objeto y se asigna a otra variable, Python no copia el objeto, sino que solo copia la referencia al objeto, lo cual llamamos copia superficial.

En Python, para que dos variables no se afecten entre sí al realizar operaciones de asignación, se puede utilizar el método deepcopy del módulo copy, lo que se denomina copia profunda.

Función append()

Cuando se realiza una operación append en un objeto de tipo list, en realidad se agrega una referencia a ese objeto.

id()Función: devuelve el identificador único del objeto, que se puede comparar con la dirección del objeto en la memoria.

>>>alist = [] >>> num = [2] >>> alist.append( num ) >>> id( num ) == id( alist[0] ) True
Como se muestra en el ejemplo anterior, cuando num cambia (siempre que id(num) no cambie), el contenido de alist también cambiará. Esto a menudo puede traer consecuencias inesperadas. Para evitar esta situación, se puede utilizar la copia profunda para resolverlo.
alist.append( copy.deepcopy( num ) )

Dirección original: https://blog.csdn.net/u010099495/article/details/50276833