1 usuario conectado
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.