Saltar al contenido principal

Variables

Una de las características más potentes de un lenguaje de programación es la capacidad de manipular variables.

Una variable es un nombre que se refiere a un valor almacenado en memoria.

Una sentencia de asignación crea variables nuevas y les da valores utilizando el operador de asignación =. El lado izquierdo del operador contiene la variable y el lado derecho el valor que se le asigna a la variable.

mensaje = "Nuevo mensaje"
n = 17
pi = 3.1416

En este ejemplo hacemos tres asignaciones. En la primera asignamos una cadena de texto a una variable nueva llamada mensaje; en la segunda asignamos el entero 17 a n; y en la tercera el valor aproximado de pi a pi.

Podemos mostrar por pantalla el valor de una variable con la sentencia print().

print(n)  # Imprime: 17
print(pi) # Imprime: 3.1416

El tipo de la variable es el tipo del valor que está guardado en esa variable.

type(mensaje)  # Tipo: <class 'str'>
type(n) # Tipo: <class 'int'>
type(pi) # Tipo: <class 'float'>

Tipado dinámico

Python es un lenguaje de tipado dinámico, lo que significa que el tipo de datos de una variable se determina en tiempo de ejecución, no en tiempo de compilación. Esto quiere decir que no es necesario declarar explícitamente el tipo de datos de una variable cuando se crea; Python lo deduce automáticamente según el valor asignado.

x = 10       # 'x' es un entero (int)
x = "Hola" # Ahora 'x' es una cadena de texto (str)

En este ejemplo, x cambia de tipo de datos de un entero (int) a una cadena de texto (str) sin ningún error, gracias al tipado dinámico.

Tipado fuerte

Python tiene tipado fuerte, lo que significa que no permite realizar operaciones entre tipos de datos incompatibles sin conversión explícita. Esto ayuda a prevenir errores inesperados durante la ejecución.

x = 10
y = "20"
z = x + y # Producirá un error: TypeError

En este caso, intentar sumar un entero (int) con una cadena de texto (str) genera un error, ya que son tipos incompatibles.

Tipado implícito

El tipado en Python es implícito, lo que significa que Python deduce automáticamente el tipo de datos de una variable en función del valor que se le asigna. No es necesario que el programador declare explícitamente el tipo de la variable, como se hace en lenguajes de tipado explícito como C o Java.

x = 10         # Python deduce que 'x' es de tipo int (entero)
y = 3.14 # Python deduce que 'y' es de tipo float (flotante)
z = "Hola" # Python deduce que 'z' es de tipo str (cadena de texto)

En este caso, el tipo de cada variable se determina automáticamente según el valor asignado sin necesidad de indicar explícitamente el tipo.

Nombres de variables y palabras clave

Los programadores generalmente eligen nombres para sus variables que tengan sentido y documentan para qué se usa la variable.

Los nombres de las variables pueden ser largos. Pueden contener tanto letras como números, pero no pueden comenzar por un número. Se pueden usar letras mayúsculas, pero es buena idea comenzar el nombre de las variables con letra minúscula.

El carácter guion bajo (_) puede utilizarse en un nombre de variable. Se utiliza a menudo en nombres con múltiples palabras. Por ejemplo: mi_nombre. Los nombres de las variables pueden comenzar con el carácter guion bajo, pero generalmente se evita usarlo. Se usa cuando se está escribiendo código para librerías que luego utilizarán otros. Este estilo de nomenclatura se conoce como snake_case.

Si se le da a una variable un nombre no permitido, se obtiene un error de sintaxis:

76trombones = "gran desfile" # Obtenemos el error: SyntaxError: invalid syntax
more@ = 1000000 # Obtenemos el error: SyntaxError: invalid syntax
class = 'Teorema avanzado' # Obtenemos error

76trombones es incorrecto porque comienza por un número. more@ es incorrecto porque contiene un carácter no permitido: @.

El nombre de variable class también es incorrecto porque es una palabra clave de Python. El intérprete utiliza palabras clave para reconocer la estructura del programa y esas palabras no pueden ser utilizadas como variables. Esas palabras reservadas son las siguientes:

False      await      else       import     pass
None break except in raise
True class finally is return
and continue for lambda try
as def from nonlocal while
assert del global not with
async elif if or yield