Volver al índiceVariables

En esta lección se tratan aspectos generales de las variables.


Qué es una variable

En un programa, una variable es un elemento en el que se puede almacenar información para su uso posterior a lo largo del programa. Las variables se identifican por su nombre.

La información que se guarda en una variable puede ser un número (entero, decimal, en notación científica, con precisión arbitraria, en base decimal o en otras bases, etc.), texto (una sola letra o más letras, del juego de caracteres ASCII occidental o del juego de caracteres Unicode, etc), conjuntos de números o letras (matrices, listas, etc.) o estructuras más complicadas. Cada tipo de información se almacena de forma distinta, por lo que existen diferentes tipos de variables para cada tipo de información.

Algunos lenguajes de programación (C, C++, Java, etc) exigen que antes de utilizar una variable se defina el tipo de información que se va a guardar en esa variable. Otros lenguajes de programación (Python, PHP, etc.) no lo exigen y es el intérprete del lenguaje el que decide el tipo de variable a utilizar en el momento que se guarda la información. Se dice que algunos lenguajes son tipificados o que son no tipificados. Python es un lenguaje no tipificado.

Volver al principio de la página


Definir una variable

Las variables en Python se crean cuando se definen, es decir, cuando se les asigna un valor. Para asignar un valor a una variable se utiliza el operador de igualdad (=). A la izquierda de la igualdad se escribe el nombre de la variable y a la derecha el valor que se quiere dar a la variable.

En el ejemplo siguiente se almacena el número decimal 2,5 en una variable de nombre x. Fíjese en que los números decimales se escriben con punto (.) y no con coma (,).

>>> x = 2.5

La variable se escribe siempre a la izquierda de la igualdad. Si se escribe al revés, Python genera un mensaje de error:

>>> 2.5 = x

SyntaxError: can't assign to literal


Para que IDLE muestre el valor de una variable, basta con escribir su nombre:

>>> x = 2.5

>>> x

2.5


Si una variable no se ha definido previamente, escribir su nombre genera un mensaje de error:

>>> x = -10

>>> y

Traceback (most recent call last):

  File "<pyshell#1>", line 1, in <module>

    y

NameError: name 'y' is not defined


Una variable puede almacenar números, texto o estructuras más complicadas (que se verán más adelante). Si se va a almacenar texto, el texto debe escribirse entre comillas simples (') o dobles ("), que son equivalentes. A las variables que almacenan texto se les suele llamar cadenas (de texto).

>>> nombre = 'Pepito Conejo'

>>> nombre

'pepito conejo'

>>> nombre = "Pepito Conejo"

>>> nombre

'pepito conejo'

Si no se escriben comillas, Python supone que estamos haciendo referencia a otra variable (que, si no está definida, genera un mensaje de error):

>>> nombre = Pepe

>>> nombre

Traceback (most recent call last):

  File "<pyshell#0>", line 1, in <module>

    nombre = Pepe

NameError: name 'Pepe' is not defined

>>> nombre = Pepito Conejo

>>> nombre

SyntaxError: invalid syntax


El nombre de una variable debe empezar por una letra o por un carácter subrayado (_) y puede seguir con más letras, números o subrayados.

>>> _x = 3.8

>>> _x

3.8

>>> x1 = 100

>>> x1

100

>>> fecha_de_nacimiento = "27 de octubre de 1997"

>>> fecha_de_nacimiento

'27 de octubre de 1997'


Las letras permitidas son las del alfabeto inglés, por lo que están prohibidas la ñ, la ç, las vocales acentuadas o los espacios. En caso de intentar dar un nombre no permitido a una variable, Python mostrará un mensaje de error al ejecutar la instrucción y la variable no se creará.

>>> año = 1492

SyntaxError: invalid syntax

>>> fecha de nacimiento = "27 de octubre de 1997"

SyntaxError: invalid syntax


Las palabras reservadas del lenguaje (las que IDLE escribe en naranja) también están prohibidas.

>>> lambda = 3

SyntaxError: invalid syntax


Los nombres de las variables pueden contener mayúsculas, pero tenga en cuenta que Python distingue entre mayúsculas y minúsculas.

>>> nombre = "Pepito Conejo"

>>> Nombre = "Numa Nigerio"

>>> nomBre = "Fulanito Mengánez"

>>> nombre

'Pepito Conejo'

>>> Nombre

'Numa Nigerio'

>>> nomBre

'Fulanito Mengánez'


Aunque no es obligatorio, se recomienda que el nombre de la variable esté relacionado con la información que se almacena en ella, para que sea más fácil entender el programa. Si el programa es trivial o mientras se está escribiendo un programa, esto no parece muy importante, pero si se consulta un programa escrito por otra persona o escrito por uno mismo pero hace tiempo, resultará mucho más fácil entender el programa si los nombres están bien elegidos.

También se acostumbra a utilizar determinados nombres de variables en algunas ocasiones, como se verá más adelante, pero esto tampoco es obligatorio.

Volver al principio de la página


Tipos de variables

En el apartado anterior hay definiciones de algunos de los tipos de variables que hay en Python: números decimales, números enteros y cadenas (una o más letras).

Aunque se definan de forma similar, para Python no es lo mismo un número entero, un número decimal o una cadena ya que, por ejemplo, dos números se pueden multiplicar pero dos cadenas no (curiosamente, una cadena sí que se puede multiplicar por un número).

Por tanto, estas tres definiciones de variables no son equivalentes:

>>> fecha = 1997

>>> fecha = 1997.0

>>> fecha = "1997"

>>> fecha = [27, "noviembre", 1997]

En el primer caso la variable fecha está almacenando un número entero, en el segundo fecha está almacenando un número decimal y en el tercero fecha está almacenando una cadena de cuatro letras. En el cuarto está almacenando una lista (un tipo de variable que puede contener varios elementos ordenados).

Este ejemplo demuestra también que se puede volver a definir una variable. Python modifica el tipo de la variable automáticamente.

Volver al principio de la página


Mostrar el valor de las variables en IDLE

Para que IDLE muestre el valor de una variable, basta con escribir su nombre. También se puede conocer el valor de varias variables a la vez escribiéndolas entre comas (IDLE las mostrará entre paréntesis), como muestra el siguiente ejemplo:

>>> a, b, c = 2, 'pepe', "a"

>>> a

2

>>> c, b

('a', 'pepe')

Volver al principio de la página


Utilizar variables ya definidas

Una vez se ha definido una variable, se puede utilizar para hacer cálculos o para definir nuevas variables, como muestran los siguientes ejemplos:

>>> a = 2

>>> a + 3

5

>>> horas = 1

>>> minutos = 2

>>> segundos = 3

>>> segundos + 60 * minutos + 3600 * horas

3723

>>> horas = 5

>>> minutos = 60 * horas

>>> segundos = 60 * minutos

>>> segundos

18000

En caso de utilizar una variable no definida anteriormente, Python genera un mensaje de error.

>>> anyo = 12 * mes

Traceback (most recent call last):

  File "<pyshell#1>", line 1, in <module>

    anyo = 12*mes

NameError: name 'mes' is not defined


Es importante recordar que los nombres de las variables no tienen sentido real para Python, son simples etiquetas para referirse al contenido.

Prueba este ejemplo, en el que el ordenador crea dos variables y las suma, aunque en el mundo real es sabido que no se pueden sumar peras y manzanas:

>>> peras = 7

>>> manzanas = 22

>>> peras + manzanas

29

Prueba este otro ejemplo:

>>> distancia = 100

>>> tiempo = 4

>>> distancia + tiempo

104

>>> distancia * tiempo

400

>>> distancia / tiempo

25

En este ejemplo, una vez definidas las variables distancia y tiempo, Python permite realizar cualquier operación, tengan o no sentido físico. De hecho, en los tres cálculos del ejemplo solamente la división tiene sentido físico (la velocidad).


Puede modificar el valor que almacena una variable en cualquier momento, pero eso no modificará las otras variables calculadas a partir de ella, como muestra el siguiente ejemplo:

>>> a = 10

>>> b = a + 5

>>> a, b

(10, 15)

>>> a = 20

>>> a, b

(20, 15)


Puede definir una variable utilizando su propio valor. Por ejemplo

>>> a = 10

>>> a = a + 5

>>> a

15

Un detalle muy importante del ejemplo anterior es que el símbolo de igualdad significa siempre asignación (se calcula la expresión de la derecha y el resultado se guarda en la variable de la izquierda). Es decir, Python coge el valor almacenado en la variable a, le suma 5, y el resultado lo guarda en la variable a. No se debe confundir con un ecuación (en el ejemplo anterior, a = a + 5, no tendría solución).

Volver al principio de la página


Definir y modificar varias variables a la vez

En una misma línea se pueden definir simultáneamente varias variables, con el mismo valor o con valores distintos, como muestra el siguiente ejemplo:

>>> a = b = 99

>>> c, d, e = "Mediterráneo", 10, ["pan", "queso"]

En el primer caso las dos variables tendrán el mismo valor. En el segundo caso la primera variable tomará el primer valor y así sucesivamente.


Si el número de variables no coincide con el de valores, Python genera un mensaje de error.

>>> a, b, c = 1, 2

Traceback (most recent call last):

  File "<pyshell#1>", line 1, in <module>

    a, b, c = 1, 2

ValueError: need more than 2 values to unpack

>>> a, b, c = 1, 2, 3, 4

Traceback (most recent call last):

  File "<pyshell#1>", line 1, in <module>

    a, b, c = 1, 2, 3, 4

ValueError: too many values to unpack


Se pueden modificar varias variables en una sola instrucción y la modificación se realiza en un solo paso.

>>> a, b = 5, 10

>>> a, b

(5, 10)

>>> a, b = b, a

>>> a, b

(10, 5)

Obsérvese que si este procedimiento lo hubiéramos hecho paso a paso, el resultado hubiera sido distinto:

>>> a, b = 5, 10

>>> a, b

(5, 10)

>>> a = b

>>> b = a

>>> a, b

(10, 10)

El motivo de este resultado se entiende fácilmente mostrando los valores tras cada operación:

>>> a, b = 5, 10

>>> a, b

(5, 10)

>>> a = b

>>> a, b

(10, 10)

>>> b = a

>>> a, b

(10, 10)

Esta página forma parte del curso "Introducción a la programación con Python" disponible en http://www.mclibre.org
Autor: Bartolomé Sintes Marco
Última modificación de esta página: 24 de abril de 2012

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.