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:
¿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:
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:
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:
Los strings con triple comilla (""" ... """) se extienden en varias líneas:
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:
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:
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:
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:
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:
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:
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:
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.