Variables (2)

En esta lección se trata la relación entre variables y objetos en Python, haciendo hincapié en la modificación de variables.

Variables y objetos

Para entender cómo funcionan las variables en Python, hace falta tener en cuenta tres aspectos:

Creación de variables

Cuando se asigna por primera vez un valor a una variable, Python:

El valor de la variable es el valor almacenado por el objeto.

Modificación de variables

Cuando se asigna un nuevo valor a una variable creada anteriormente, el valor de la variable será el nuevo valor almacenado, pero con respecto a los objetos (que son los que realmente almacenan los valores) pueden darse tres situaciones:

Los tres ejemplos siguientes, ilustran estas tres situaciones. Los ejemplos están acompañados de dibujos en los que se muestran los objetos (con los valores que almacenan) y las variables (como etiquetas asociadas a los objetos).

Cómo afecta la modificación de una variable a otras variables

En Python, al modificar una variable se pueden modificar otras variables. Eso ocurre cuando al modificar una variable se modifique el objeto y haya otras variables haciendo referencia al mismo objeto

Para entenderlo, vamos a repetir los tres ejemplos anteriores introduciendo una segunda variable y observando qué ocurre en cada caso.

Modificación de variables asociadas a listas

Los objetos inmutables no se pueden modificar de ninguna manera. Cuando una variable está asociada a un objeto inmutable, al modificar la variable no se modifica el objeto, sino que la variable se asocia a un nuevo objeto.

Sin embargo, los objetos mutables se pueden modificar. Cuando una variable está asociada a un objeto mutable, al modificar la variable se puede modificar el objeto en algunos casos, pero no en otros.

Veamos en el caso de las listas las diferentes maneras de modificar la variable y en qué casos no modifica el objeto y en qué casos sí.

Modificación de variables que no modifican las listas

Modificación de variables que modifican las listas

Copiar una lista

Como se comenta en la lección de Listas, para copiar una lista hay que utilizar la notación de sublistas. De esta manera se consiguen tener dos objetos independientes, como muestra el ejemplo siguiente

Copiar una lista

>>> a = [1, 2, 3]
>>> b = a[:]
>>> a, b
([1, 2, 3], [1, 2, 3])
>>> a[1] = [4]
>>> a, b
([1, 4, 3], [1, 2, 3])

Variables 21 3

Puede ver la ejecución paso a paso de este ejemplo utilizando los iconos de avance y retroceso situados abajo a la derecha.

Siguiente

Copiar una lista - Paso 1

>>> a = [1, 2, 3]

Variables 21 1

Al asignar a la variable "a" el valor [1, 2, 3], Python crea el objeto "lista [1, 2, 3]" y le asocia la etiqueta "a". El objeto lista es mutable, es decir, puede cambiar.

Anterior Siguiente

Copiar una lista - Paso 2

>>> a = [1, 2, 3]
>>> b = a[:]

Variables 21 2

Al asignar la variable "b" a una sublista de la variable "a" (aunque en este caso la sublista incluya toda la lista), Python crea un nuevo objeto con el mismo contenido y le asocia la etiqueta "b".

Anterior Siguiente

Copiar una lista - Paso 3

>>> a = [1, 2, 3]
>>> b = a[:]
>>> a, b
([1, 2, 3], [1, 2, 3])

Variables 21 2

Al pedir el valor de las variables, se muestran los valores ([1, 2, 3], [1, 2, 3]). Las variables tienen el mismo valor aunque estén asociadas a objetos distintos.

Anterior Siguiente

Copiar una lista - Paso 4

>>> a = [1, 2, 3]
>>> b = a[:]
>>> a, b
([1, 2, 3], [1, 2, 3])
>>> a[1] = 4

Variables 21 3

Al modificar un valor de la lista se modifica el objeto, que contiene ahora la lista [1, 4, 3].

Anterior Siguiente

Copiar una lista - Paso 5

>>> a = [1, 2, 3]
>>> b = a[:]
>>> a, b
([1, 2, 3], [1, 2, 3])
>>> a[1] = 4
>>> a, b
([1, 4, 3], [1, 2, 3])

Variables 21 4

Al pedir el valor de las variables, se muestran los valores ([1, 4, 3], [1, 2, 3]. Las variables tienen ahora valores distintos ya que están asociadas a objetos distintos. Fíjese en que al modificar una variable no se ha modificado la otra.

Anterior