5 usuarios conectados
Funciones. Argumentos variables en Python.*Args y **kwargs
Funciones. Argumentos variables en Python.*Args y **kwargs
Vamos a revisar los argumentos variables (*args
y **kwargs) para que queden bien claros.
*args (Argumentos Posicionales
Variables):
Imagina que quieres crear una función que pueda
recibir cualquier número de argumentos, sin tener que definir cada uno de ellos
individualmente. Aquí es donde entra en juego *args.
- Cuando defines una función con
*args
como parámetro, Python recoge todos los argumentos posicionales que se le
pasan en una tupla.
- Dentro de la función, puedes iterar sobre esta
tupla para acceder a cada uno de los argumentos.
Ejemplo:
Salida:
En este ejemplo, al llamar a
mi_funcion_args con 1, "hola", y 3.14,
todos estos valores se agrupan en la tupla args dentro de la
función.
Uso típico: Para funciones que
necesitan operar sobre una cantidad indefinida de elementos, como sumar números,
encontrar el máximo, etc.
**kwargs (Argumentos de
Palabra Clave Variables):
Ahora, ¿qué pasa si quieres pasar argumentos a
una función usando nombres (palabras clave), y no sabes cuántos de estos
argumentos con nombre se pasarán? Aquí es donde **kwargs es útil.
- Cuando defines una función con
**kwargs
como parámetro, Python recoge todos los argumentos que se pasan usando la
sintaxis nombre=valor en un diccionario.
- Dentro de la función,
kwargs es
un diccionario donde las claves son los nombres de los argumentos y los
valores son sus respectivos valores.
Ejemplo:
Salida:
En este caso, los argumentos nombre="Ana",
edad=30, y ciudad="Madrid" se recogen en el
diccionario kwargs.
Uso típico: Para funciones que
aceptan una variedad de opciones configurables o para pasar atributos a otras
funciones de manera flexible.
Combinación de *args y
**kwargs:
Es común ver funciones que utilizan ambos
*args y **kwargs en su definición. Esto permite a la función
aceptar tanto un número variable de argumentos posicionales como un número
variable de argumentos con nombre. Recuerda que, en la definición de la función,
*args debe aparecer antes de **kwargs.
Salida:
Aquí, 1, 2, y
"tres" se recogen en la tupla args, mientras que
nombre="Beto" y profesion="Artista" se recogen en el
diccionario kwargs.
En resumen:
*args: Recoge argumentos
posicionales adicionales en una tupla.
**kwargs: Recoge argumentos con
nombre adicionales en un diccionario.
Ambos son muy útiles para crear funciones más
flexibles y que puedan manejar diferentes formas de entrada.