Este tutorial es muy, muy importante. En él aprenderás qué son las variables en Python, cómo asignarles un valor y cómo modificarlas.
Índice
Variables en Python
Las variables son uno de los dos componentes básicos de cualquier programa.
En su esencia, un programa está compuesto por datos e instrucciones que manipulan esos datos. Normalmente, los datos se almacenan en memoria (memoria RAM) para que podamos acceder a ellos.
Entonces, ¿qué es una variable? Una variable es una forma de identificar, de forma sencilla, un dato que se encuentra almacenado en la memoria del ordenador. Imagina que una variable es un contenedor en el que se almacena un dato, el cuál, puede cambiar durante el flujo del programa. Una variable nos permite acceder fácilmente a dicho dato para ser manipulado y transformado.
Por ejemplo, supongamos que queremos mostrar el resultado de sumar 1 + 2. Para mostrar el resultado, debemos indicarle al programa dónde se encuentra dicho dato en memoria y, para ello, hacemos uso de una variable:
# Guardamos en la variable suma el resultado de 1 + 2 suma = 1 + 2 # Accedemos al resultado de 1 + 2 a través de la variable suma print(suma)
Asignar un valor a una variable en Python
Tal y como hemos visto en el ejemplo anterior, para asignar un valor (un dato) a una variable se utiliza el operador de asignación =
.
En la operación de asignación se ven involucradas tres partes:
- El operador de asignación
=
- Un identificador o nombre de variable, a la izquierda del operador
- Un literal, una expresión, una llamada a una función o una combinación de todos ellos a la derecha del operador de asignación
Ejemplos:
# Asigna a la variable <a> el valor 1 a = 1 # Asigna a la variable <a> el resultado de la expresión 3 * 4 a = 3 * 4 # Asigna a la variable <a> la cadena de caracteres 'Pythonista' a = 'Pythonista'
Cuando asignamos un valor a una variable por primera vez, se dice que en ese lugar se define e inicializa la variable. En un script o programa escrito en Python, podemos definir variables en cualquier lugar del mismo. Sin embargo, es una buena práctica definir las variables que vayamos a utilizar al principio.
Si intentamos usar una variable que no ha sido definida/inicializada previamente, el intérprete nos mostrará un error:
>>> print(a) Traceback (most recent call last): File "<input>", line 1, in <module> NameError: name 'a' is not defined
Para terminar esta sección de variables en Python, vamos a introducir el concepto tipo de dato. Al asignar un valor a una variable, dicho valor pertenece a un conjunto de valores conocido como tipo de dato. Un tipo de dato define una serie de características sobre esos datos y las variables que los contienen como, por ejemplo, las operaciones que se pueden realizar con ellos. En Python, los tipos de datos básicos son los numéricos (enteros, reales y complejos), los boolenaos (True, False) y las cadenas de caracteres.
Veamos un ejemplo:
a = 1 # La variable a es de tipo entero (int) b = 'Hola' # La variable b es de tipo cadena de caracteres
A diferencia de otros lenguajes, en Python no es necesario indicar el tipo de dato cuando se define una variable. Además, en cualquier momento, una variable que es de un tipo puede convertirse en una variable de otro tipo cualquiera:
a = 1 # a es de tipo entero a = 'Hola' # Ahora a es de tipo cadena de caracteres
Se dice que Python (el intérprete) infiere el tipo de dato al que pertenece una variable en tiempo de ejecución, es decir, es cuando se ejecuta el programa, cuando conoce su tipo de dato y qué operaciones pueden llevarse a cabo con él.
Modificar el valor de una variable en Python
Para modificar el valor de una variable en Python, basta con asignarle un nuevo valor en cualquier momento y lugar después de la definición.
Por ejemplo:
>>> a = 1 >>> print(a) 1 >>> b = 'Hola' >>> a = 3 >>> print(a) 3
Como vemos en el ejemplo anterior, hemos modificado el dato de la variable a
. En la línea 1 le hemos asignado el valor 1
. Más tarde, en la línea 5, hemos actualizado su valor a 3
.
Literales
Tal y como te he mencionado en un apartado anterior, a una variable se le puede asignar un literal, una expresión, una llamada a una función o una combinación de todos ellos.
Ahora bien, ¿qué es un literal? Ya hemos visto ejemplos de literales en los apartados anteriores. Un literal no es más que un dato en crudo que se puede asignar directamente a una variable o formar parte de una expresión.
En el siguiente ejemplo se asigna a la variable a el literal 1
:
a = 1
El literal 1
representa el valor numérico del número entero 1.
Existen varios tipos de literales:
- Numéricos (Enteros, reales y complejos):
1
,3
,3.14
,-1
,3.14j
, … - Cadenas de caracteres:
'Hola'
,'Me gusta Python'
, … - Booleanos:
True
yFalse
- El literal especial
None
.None
significa ausencia de valor y es muy utilizado en programación.
Asignar un valor a múltiples variables
Ahora vas a descubrir cómo asignar un mismo valor a múltiples variables a la vez. Si tienes que definir varias variables con un mismo dato, puedes usar la siguiente estructura:
>>> a = b = c = 1 # Inicializa a, b y c con el valor 1 >>> print(a) 1 >>> print(b) 1 >>> print(c) 1
Asignar múltiples valores a múltiples variables
También es posible inicializar varias variables con un valor diferente cada una del siguiente modo:
>>> a, b, c = 1, 2, 3 >>> print(a) 1 >>> print(b) 2 >>> print(c) 3
No obstante, te desaconsejo que lo hagas así porque el código es menos legible.
Variables y memoria
Finalmente, para terminar esta sección, quiero que te quede realmente claro qué es esto de una variable y cómo asigna Python las direcciones de memoria a los datos y a las variables.
Para empezar, te diré que en Python todo es un objeto. Sí, todavía no hemos visto el apartado de programación orientada a objetos con Python, pero ten presente que en Python todo es un objeto.
Entonces, ¿qué ocurre cuando a la variable a
le asigno el valor 1
?
a = 1
Realmente, la variable a
hace referencia al objeto que representa al número entero con valor 1
. Si ahora creas una nueva variable b
y le asignas también el valor 1
, b
está haciendo referencia al mismo objeto que la variable a
. En definitiva, a
y b
hacen referencia al mismo objeto y, por tanto, están asociadas a la misma dirección de memoria. Esto no es así en otros lenguajes, pero esto es Python, jaja. En otros lenguajes a
y b
estarían asociadas a direcciones de memoria diferentes.
Para que lo entiendas mejor te voy a presentar la función id()
que viene con Python. La función id()
devuelve un identificador único del objeto que se le pasa como parámetro. Este identificador es un entero el cuál se garantiza que es único e inmutable durante toda la vida del objeto en memoria.
❗️ En la implementación de Python CPython (la más común), este identificador es realmente la dirección en memoria del objeto.
Veamos todo lo anterior con un ejemplo:
# a y b hacen referencia al objeto que representa al entero 1 # Referencian a la misma dirección de memoria >>> a = 1 >>> b = 1 >>> id(1) 4299329328 >>> id(a) 4299329328 >>> id(b) 4299329328 # b es asignado con el objeto que representa el entero 2 # a y b referencian a diferentes direcciones de memoria # a mantiene la referencia al entero 1 >>> b = 2 >>> id(a) 4299329328 >>> id(b) 4299329360 # a es asignada con el valor de b # a y b referencian al mismo objeto y, por tanto, # a la misma dirección de memoria >>> a = b >>> id(a) 4299329360 >>> a 2
Y con esto terminamos este tutorial sobre variables en Python. No te pierdas el siguiente tutorial en el que explicaré los tipos de datos básicos de Python.