Skip to main content

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.