CodeForge

Python de Cero a Experto / Python avanzado

Typing moderno

Teoría22 min20 XP

Python es de tipado dinámico, pero eso no significa "sin tipos": las ANOTACIONES DE TIPO modernas te dejan declarar qué tipos espera y devuelve tu código, igual que en TypeScript (SC-03). No son obligatorias ni frenan la ejecución, pero documentan, ayudan a tu editor a autocompletar y avisar de errores, y con herramientas como mypy atrapan bugs antes de ejecutar. Hoy dominas el typing moderno de Python —el puente directo con todo lo que aprendiste en TypeScript—.

Las etiquetas que documentan

Anotaciones modernas

Las anotaciones modernas usan los tipos nativos directamente: list[str] (lista de strings), dict[str, int] (diccionario de string a int), tuple[int, int]. Van tras los dos puntos en parámetros (gastos: list[dict]), tras la flecha para el retorno (-> int), y también en variables (resumen: dict[str, int] = {}). Recuerda: Python NO las verifica al ejecutar (total("no soy lista") no daría error de tipo en runtime) —son ayuda para ti, tu editor y mypy—. Pero hacen el código autodocumentado y atrapan errores mientras escribes.

Optional, uniones y más

¿Qué significa que una función devuelva 'dict | None' y verifican los tipos de Python la ejecución?

Mini-reto

Tipa un módulo de Mi Bolsillo: 1) define un TypedDict Gasto con nombre: str, valor: int, categoria: str; 2) escribe total(gastos: list[Gasto]) -> int y mas_caro(gastos: list[Gasto]) -> Gasto | None (devuelve None si la lista está vacía); 3) una función aplicar_descuento(valor: float, pct: float | None = None) -> float que no descuente si pct es None. Comprueba que funcionan e imprime total.__annotations__. Nota cuánto se parece a lo que hiciste en TypeScript.

Qué sigue

Ya tipas tu Python. La próxima lección trae una característica relativamente nueva y muy elegante: el PATTERN MATCHING (match/case) —una forma poderosa de comparar valores y DESESTRUCTURAR datos según su forma, más allá de un simple if—. El primo pythónico del switch con superpoderes.