Funciones avanzadas

Cuando ni tú sabes cuántos argumentos vas a necesitar, y funciones tan cortas que ni piden nombre.

Hasta ahora tus funciones reciben una cantidad fija de parámetros. Pero, ¿y si quieres sumar 2 números, o 5, o 20, con la misma función? Para eso está *args: junta todos los argumentos sueltos en una tupla.

Con dos asteriscos pasa lo mismo, pero con argumentos que llegan con nombre. Python los junta en un diccionario.

Se pueden combinar: parámetros normales, luego *args, y al final **kwargs. Ese orden no es opcional, Python lo exige así.

Una lambda es una función chica, sin nombre, escrita en una sola línea. Sirve para esos casos donde definir una función completa con def se siente exagerado.

map() aplica una función a cada elemento de una lista. filter() se queda solo con los elementos que cumplen una condición. A las dos se les pasa una función como argumento — casi siempre una lambda.

En Python, la comprensión de listas suele preferirse a map/filter porque se lee más de corrido. Pero vas a encontrar ambas formas en código real, así que conviene reconocer las dos.

*args y **kwargs para funciones flexibles, lambda para funciones chicas y desechables, y map/filter para procesar listas sin escribir el bucle a mano.

Ahora que sabes empaquetar datos, toca aprender a intercambiarlos: el formato que habla todo internet.