Menu

Tipos de datos en Python: int, float, str, bool, list, dict y más

Un recorrido por los tipos de datos incorporados de Python — números, strings, booleanos, None, listas, tuplas, sets, dicts — con ejemplos y cuándo recurrir a cada uno.

Por qué importan los tipos

Un tipo es simplemente una categoría que le dice a Python cómo debe comportarse un valor. Sumar dos enteros significa aritmética; sumar dos strings significa unirlos; sumar un string a un entero es un error. El tipo de un valor determina qué operaciones tienen sentido sobre él.

Python tiene un conjunto pequeño y amistoso de tipos incorporados. Usarás cuatro de ellos — int, float, str, bool — en casi cada programa que escribas. El resto aparece cuando empiezas a organizar datos en colecciones.

Números: int y float

Dos tipos de números, y Python elige cuál obtienes según cómo lo escribas:

main.py
Output
Click Run to see the output here.

¿Sin punto decimal? Obtienes un int. ¿Con punto decimal? Obtienes un float. La aritmética los mezcla libremente — cualquier operación que involucre un float produce un float:

main.py
Output
Click Run to see the output here.

Los enteros en Python pueden ser tan grandes como te permita la memoria — sin desbordamiento, sin techo fijo de 32 o 64 bits. Puedes calcular 2 ** 1000 y Python te devolverá cada dígito.

Los floats siguen las reglas habituales IEEE 754, lo que trae unas cuantas sorpresas clásicas:

main.py
Output
Click Run to see the output here.

Eso imprime 0.30000000000000004, no 0.3. No es un bug de Python — es cómo funciona la coma flotante binaria en todos los lenguajes. Cuando necesites decimales exactos (dinero, por ejemplo), recurre al módulo decimal. Para todo lo demás, redondear al mostrar suele bastar.

Strings: str

Los strings son secuencias de caracteres. Envuélvelos en comillas simples o dobles — a Python no le importa cuáles, siempre que la comilla de apertura y cierre coincidan:

main.py
Output
Click Run to see the output here.

Los strings con triple comilla (""" ... """) se extienden en varias líneas:

main.py
Output
Click Run to see the output here.

Los strings tienen una API enorme que irás aprendiendo con el tiempo — slicing, métodos como .upper(), .split(), .replace() y el formateo con f-strings que te da f"Hello, {name}". Hay una página dedicada a strings justo después.

Booleanos: bool

Dos valores, escritos exactamente como se muestran — True y False, con mayúscula inicial. Las comparaciones producen booleanos:

main.py
Output
Click Run to see the output here.

Por debajo, True y False son literalmente 1 y 0, lo que significa que puedes sumar booleanos si alguna vez necesitas contar cuántas condiciones fueron verdaderas:

main.py
Output
Click Run to see the output here.

None: la ausencia de valor

None es la forma que tiene Python de decir "ningún valor". Las funciones que no devuelven nada explícitamente devuelven None. También lo usarás como marcador de posición:

main.py
Output
Click Run to see the output here.

La convención es probar con is None y is not None — no == None. is comprueba identidad, que es lo que realmente quieres decir aquí.

Listas, tuplas, sets y diccionarios

Estos son los cuatro tipos de colección incorporados. Cada uno tiene su propia página con detalle, pero aquí tienes el bosquejo rápido para que los reconozcas:

main.py
Output
Click Run to see the output here.

Reglas de andar por casa:

  • List: una secuencia que esperas que cambie. Añadir, quitar, ordenar — todo bien.
  • Tuple: una secuencia que quieres proteger del cambio. Se usa a menudo para registros de forma fija como coordenadas (x, y).
  • Set: una bolsa de elementos únicos, cuando los duplicados serían un bug.
  • Dict: búsquedas por clave. La estructura con forma JSON.

Convertir entre tipos

Python no convierte tipos por ti automáticamente cuando eso sería arriesgado. Convertir un entero en string, o un string en número, es algo que pides:

main.py
Output
Click Run to see the output here.

Si una conversión no tiene sentido — int("hello"), por ejemplo — Python lanza ValueError y te dice lo que le diste. Error, explicado, arregla y sigue.

Comprobar un tipo

Dos herramientas que vale la pena conocer:

main.py
Output
Click Run to see the output here.

type() es genial para un vistazo rápido en el REPL. isinstance() es lo que usas en código real porque se lleva bien con la herencia y puede comprobar contra varios tipos a la vez.

Un ejercicio rápido de exploración

Prueba a ejecutar el bloque de abajo tal cual, luego cambia unos cuantos valores y mira en qué tipos se convierten:

main.py
Output
Click Run to see the output here.

No necesitas entender for todavía — llegaremos — pero esto te da una idea de los tipos incorporados de un vistazo.

Elige el tipo que encaja con los datos

No necesitas memorizar cada tipo ahora. Necesitas ser capaz de reconocer uno cuando lo veas, y elegir el correcto al crear datos. "¿Esto es fijo o cambia? ¿Único o no? ¿Lo busco por clave o por posición?" Esas cuatro preguntas eligen el tipo de colección el noventa por ciento del tiempo.

Siguiente: strings en profundidad, porque es el tipo de dato que tocarás en casi cada programa.

Preguntas frecuentes

¿Cuáles son los principales tipos de datos en Python?

Números (int y float), strings (str), booleanos (bool), None y cuatro tipos de colección — list, tuple, set y dict. Todo lo demás que ves en código Python está construido a partir de estos más un puñado de otros (bytes, complex, frozenset).

¿Cómo compruebo el tipo de un valor en Python?

Envuélvelo en type(): type(42) devuelve <class 'int'>, type('hi') devuelve <class 'str'>. Para una comprobación verdadero/falso, usa isinstance(value, int) — es más flexible porque también gestiona subclases.

¿Python tiene tipado estático o dinámico?

Tipado dinámico. Una variable puede apuntar a cualquier tipo de valor, y la misma variable puede cambiar de tipo a lo largo de su vida. Eso es distinto de lenguajes como Java o C++, donde declaras el tipo de una variable una vez y no puede cambiar.

Aprende a programar con Coddy

COMENZAR