Decoradores y generadores

Dos palabras que asustan en las entrevistas de trabajo, y que en el fondo son ideas simples.

Una función normal con return calcula todo y lo entrega de golpe. Un generador usa yield en vez de return, y entrega los valores de a uno, solo cuando se le piden.

Esto te va a sonar familiar: llevas usando algo parecido a un generador desde el primer tutorial de bucles. range(1000000) no crea un millón de números en memoria: los va entregando uno por uno, a medida que el bucle los pide.

Un decorador es una función que recibe otra función, le agrega un comportamiento extra, y devuelve la versión mejorada. La marca @ es solo un atajo para aplicarlo.

Fíjate: saludar nunca se enteró de que la están anunciando. El decorador agrega comportamiento sin tocar una sola línea de la función original.

Este es uno de los usos más comunes en código real: medir cuánto se demora una función, sin ensuciarla con código de medición por dentro.

Desde print() hasta decoradores: variables, listas y diccionarios, funciones, clases, archivos, JSON, fechas, expresiones regulares, generadores. Con esto tienes las herramientas para leer prácticamente cualquier código Python que te encuentres, y para empezar un proyecto propio de verdad.

Si te interesa el otro lado —dibujar, animar, hacer juegos en el navegador— ahí está el curso de JavaScript. Vas a reconocer casi todas las ideas; solo cambia cómo se escriben.