Saltar al contenido principal

Tipos, variables, constantes y literales

Python define un conjunto de tipos de datos primitivos (int, float, str, bool, None) que usaremos constantemente en nuestros programas. Sobre ellos trabajaremos con variables, a las que asignamos valores, y con constantes, que por convención se escriben en mayúsculas (MAX_INTENTOS, PI...) para indicar que no deben modificarse.

Un literal es la representación directa de un valor en el código (42, 3.14, "hola", True...), y es lo que usamos para inicializar variables y constantes.

Valores y tipos de datos

Un valor es una de las cosas básicas que utiliza un programa, como una letra o un número. Estos valores pueden ser de tipos distintos. Por ejemplo, 1 y 2 son valores de tipo entero, int y "¡Hola mundo!" es una cadena de caracteres, string. Las cadenas de caracteres deben ir encerradas entre comillas.

La sentencia print ya la vimos en apartados anteriores. Servía para mostrar texto por pantalla. Esta sentencia funciona con string pero también con int.

print(4) # Imprime: 4

Si no estás seguro de qué tipo es un valor, la función type() nos indica cuál es su tipo.

print(type("¡Hola mundo")) # Imprime: <class 'str'>
print(type(17)) # Imprime: <class 'int'>

Los números con decimales son del tipo float. Esto se debe a que internamente estos se representan en formato coma flotante.

print(type(3.2)) # Imprime: <class 'float'>
Números como cadenas de texto

Si los valores numéricos van entre comillas, no se interpretan como números sino como cadenas de texto.

print(type("17")) # Imprime: <class 'str'>
print(type("3.2") ) # Imprime: <class 'str'>

Cuando escribes un número grande, puede que intentes usar comas o puntos para separarlo por grupos de tres dígitos. Por ejemplo: 1.000.000 o 1,000,000. Esto no es posible en Python ni en la mayoría de lenguajes de programación. El separador de decimales en Python, tal como ya vimos, es el punto.

Tipo de datos básicos

El tipo de datos define la naturaleza o el tipo de información que una variable puede almacenar y manipular. El tipo de datos determina las operaciones que se pueden realizar con el valor de la variable y cómo se almacena en memoria.

En la siguiente tabla se realiza un resumen del tipo de datos básicos existentes en Python:

Tipo/claseCategoríaNotasEjemplo
intNúmerosNúmero entero de precisión fija42
floatNúmerosNúmero en coma flotante3.1415927
boolBooleanoSolo existen los dos valores lógicosTrue y False
strCadenaCadena de caracteres¡Hola mundo!

Todos estos tipos de datos son inmutables.

Caracteres y ASCII

Cada carácter de un string tiene asociado un valor numérico. Estos valores numéricos están establecidos por los códigos ASCII.

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

Valor None

Existe un tipo de datos que representa la ausencia de un valor o la falta de un valor dado: None. Es muy utilizado para indicar que una variable o una expresión no tiene un valor definido.

Puede ser útil cuando se desea inicializar una variable antes de asignarle un valor específico.

variable_sin_valor = None