Python de Cero a Experto / Funciones
Parámetros flexibles: defaults, *args, **kwargs
Las funciones de Python son muy flexibles con cómo reciben datos. Puedes dar valores POR DEFECTO (para
parámetros opcionales), pasar argumentos POR NOMBRE (para que la llamada se lea clara), y recibir un
número VARIABLE de argumentos con *args y **kwargs. Estas herramientas hacen que una misma función
sirva para muchos casos sin duplicarla. Hoy las dominas.
La receta con ingredientes opcionales
Valores por defecto y argumentos por nombre
Un parámetro con =valor es OPCIONAL: si no lo pasas, usa el valor por defecto (tasa=0.19). Los
parámetros con defecto van SIEMPRE después de los obligatorios. Y puedes pasar argumentos POR NOMBRE
(categoria="comida"): esto hace la llamada más legible (queda claro qué es cada valor) y te libera del
orden (registrar(valor=2800, nombre="Bus") funciona). Los argumentos por posición van primero; los de
nombre después.
*args: número variable de posicionales
**kwargs: número variable de nombrados
¿Qué recogen *args y **kwargs, y en qué estructura cada uno?
Mini-reto
Haz funciones flexibles para Mi Bolsillo: 1) con_impuesto(valor, tasa=0.19) con tasa opcional; 2)
sumar_gastos(*valores) que sume cuantos gastos le pases usando *args; 3) crear_gasto(**datos) que
devuelva un diccionario con lo que reciba por nombre; 4) llámalas de varias formas (con y sin los
opcionales, con distintos números de argumentos). Comprueba que sumar_gastos() sin argumentos da 0.
Qué sigue
Ya haces funciones flexibles. La próxima lección trae las funciones LAMBDA (funciones anónimas de una
línea) y la idea de que en Python las funciones son VALORES que puedes pasar a otras funciones —la base de
map, filter y sorted(key=...)—. Un salto hacia el estilo funcional.