No, el resultado debería ser 1.
Think del operador de asignación (=
) como la asignación de una referencia.
a = 1 #a references the integer object 1
b = a #b and a reference the same object
a = 2 #a now references a new object (2)
print b # prints 1 because you changed what a references, not b
Toda esta distinción es realmente más importante cuando se trata de mutables objetos como lists
en contraposición a inmutables objetos como int
, float
y tuple
.
Ahora consideremos el siguiente código:
a=[] #a references a mutable object
b=a #b references the same mutable object
b.append(1) #change b a little bit
print a # [1] -- because a and b still reference the same object
# which was changed via b.
gracias por esa explicación. Pensé que con a = 2, cambiaría cualquier cosa que apunte de 1 a 2, pero por lo que dices, parece que cambié hacia a dónde apunta (a 2 en lugar de 1) – user1266138
@ user1266138 - Sí. Esa es una forma apropiada de pensarlo. (aunque en python solemos decir "referencia" en lugar de "punto", pero eso es solo semántica). – mgilson