Este es mi segundo día de aprendizaje de Python (conozco los conceptos básicos de C ++ y algo de OOP), y tengo una ligera confusión con respecto a las variables en Python.
Así es como los entiendo actualmente:
Las variables de Python son referencias (¿o punteros?) A objetos (que son mutables o inmutables). Cuando tenemos algo así num = 5
, el objeto inmutable 5
se crea en algún lugar de la memoria y el par de referencia nombre-objeto num
se crea en un cierto espacio de nombres. Cuando lo tenemos a = num
, no se copia nada, pero ahora ambas variables se refieren al mismo objeto y a
se agregan al mismo espacio de nombres.
Aquí es donde mi libro, Automatizar las cosas aburridas con Python , me confunde. Como es un libro para principiantes, no menciona objetos, espacios de nombres, etc., e intenta explicar el siguiente código:
>>> spam = 42
>>> cheese = spam
>>> spam = 100
>>> spam
100
>>> cheese
42
La explicación que ofrece es exactamente la misma que la de un libro de C ++, lo que no me satisface ya que estamos tratando con referencias / punteros a objetos. Entonces, en este caso, supongo que en la tercera línea, como los enteros son inmutables, spam
se le está asignando un puntero / referencia completamente nuevo a una ubicación diferente en la memoria, es decir, la memoria a la que apuntaba inicialmente no se modificó. De ahí que nos cheese
refiramos al objeto inicial al que se refiere spam
. ¿Es esta la explicación correcta?