Variable Assignment
dice en la documentación de Python que «las instrucciones de asignación en Python no copian objetos, crean enlaces entre un destino y un objeto.»Eso significa que cuando creamos una variable por asignación, la nueva variable se refiere al mismo objeto que la variable original –
>>> A = , 3, ]>>> B = A>>> id(A)
3061527080>>> id(B)
3061527080
porque la nueva variable B
y la variable original A
comparten el mismo objeto (p.ej., la misma lista), también contienen los mismos elementos —
>>> id(A)
3061527368>>> id(B)
3061527368
Como se ilustra en la siguiente figura, A
y B
compartir el mismo id
, es decir, se refieren al mismo objeto en memoria. Y contienen los mismos elementos.,
Copia Superficial
Cuando creamos una variable por copia superficial, la nueva variable se refiere a un nuevo objeto —
>>> A = , 3, ]>>> C = copy(A)>>> id(A)
3062428488>>> id(C)
3062428520
Aunque A
y C
hace referencia a dos objetos diferentes (es decir,, dos listas con direcciones de memoria diferentes), los elementos en las dos listas se refieren a los mismos objetos —
>>> id(A)
2301696>>> id(C)
2301696>>> id(A)
3062464904>>> id(C)
3062464904
la siguiente figura ilustra cómo los elementos en A
se refieren a los mismos objetos que los elementos en C
.,>