Otros argumentos
*args
y **kwargs
son convenciones utilizadas en Python para trabajar con un número variable de argumentos en funciones.
*args
(Argumentos posicionales):
La sintaxis *args
permite a una función aceptar un número variable de argumentos posicionales (sin nombre) cuando es llamada. El término "args" es una convención, pero puedes usar cualquier nombre precedido por un asterisco (*).
def suma(*args):
total = 0
for numero in args:
total += numero
return total
resultado = suma(1, 2, 3, 4, 5)
print(resultado) # Imprime 15
En este ejemplo, la función suma
puede aceptar cualquier cantidad de argumentos posicionales. args
se convierte en una tupla que contiene todos los valores que se pasaron.
**kwargs
(Argumentos de palabra clave):
La sintaxis **kwargs
permite a una función aceptar un número variable de argumentos de palabra clave (con nombre) cuando es llamada. Al igual que con *args
, "kwargs" es una convención, pero puedes usar cualquier nombre precedido por dos asteriscos (**).
def imprimir_info(**kwargs):
for clave, valor in kwargs.items():
print(clave + ": " + valor)
imprimir_info(nombre="Juan", edad="25", ciudad="Ciudad de México")
# Imprime:
# nombre: Juan
# edad: 25
# ciudad: Ciudad de México
En este ejemplo, la función imprimir_info
puede aceptar cualquier cantidad de argumentos de palabra clave. kwargs
se convierte en un diccionario que contiene todas las parejas clave-valor proporcionadas.
Uso combinado:
Puedes usar ambos *args
y **kwargs
en la misma función para permitir flexibilidad en la cantidad y tipo de argumentos.
def funcion_combinada(arg1, *args, **kwargs):
print("Argumento normal:", arg1)
print("Argumentos posicionales (*args):", args)
print("Argumentos de palabra clave (**kwargs):", kwargs)
funcion_combinada("Hola", 1, 2, 3, nombre="Juan", edad=25)
# Imprime:
# Argumento normal: Hola
# Argumentos posicionales (*args): (1, 2, 3)
# Argumentos de palabra clave (**kwargs): {'nombre': 'Juan', 'edad': 25}
En este ejemplo, la función funcion_combinada
acepta un argumento normal (arg1
), cualquier número de argumentos posicionales (*args
), y cualquier número de argumentos de palabra clave (**kwargs
).
En resumen, *args
y **kwargs
son herramientas poderosas para manejar un número variable de argumentos en funciones. *args
recopila argumentos posicionales en una tupla, y **kwargs
recopila argumentos de palabra clave en un diccionario. Estas convenciones ofrecen flexibilidad y versatilidad al diseñar funciones que pueden adaptarse a diferentes situaciones.