Hay tres tipos de argumentos que una función de Python puede aceptar: estándar, variable (*args) y palabra clave (**kwargs). Los argumentos estándar son los más simples pero tienen una funcionalidad limitada. Por otro lado, *args y **kwargs le permiten flexibilizar sus funciones al aceptar un número variable de entradas.
El tipo de paso de argumentos que elija depende de la naturaleza de su función y de su propio estilo de programación preferido.
Funciones básicas en Python
Para comprender cómo funcionan los dos argumentos variables en las funciones de Python, es esencial comprender por qué existen en primer lugar. Una función simple declara un número fijo de argumentos anónimos así:
definitivamentenúmero adicional(a B C):
devolver a + b + c
Esta función funciona bien, pero hay margen de mejora. El mayor problema es que solo maneja dos argumentos, por lo que solo puede sumar dos números. ¿Qué pasa si quieres sumar dos o cuatro números? Esta función no le permitirá hacerlo. Pasar más o menos argumentos de los que acepta la función conducirá a un TypeError.
Por supuesto, podría crear más funciones para aceptar diferentes números de argumentos. Pero eso es un inconveniente y no escalará bien en absoluto. También deberá crear una nueva función cada vez que desee manejar una nueva cantidad de entradas.
Ahí es donde entran los argumentos variables y los argumentos de palabras clave. Usando *args y **kwargs, puede definir funciones flexibles que pueden tomar una cantidad variable de entradas.
¿Qué es *args en Python?
La idea principal detrás de *args en Python es permitirle pasar un número variable de entradas a su función. Esto es útil en varias aplicaciones. Por ejemplo, piense en un programa de calculadora en el que desee dar al usuario la capacidad de sumar dos o más números y devolver la suma.
Tenga en cuenta que args es solo un nombre de variable; es el * que es importante. Puede usar cualquier nombre válido para su argumento de variable, siempre que incluya el *.
Cómo usar * argumentos
Puede modificar la función addnum para tomar un número variable de entradas de la siguiente manera:
definitivamentenúmero adicional(*argumentos):
totales = 0por número en argumentos:
total = total + número
devolver total
El fragmento de código de arriba utiliza un bucle for para iterar a través de las entradas proporcionadas.
Luego puede llamar a la función addnum con argumentos variables y funcionará sin arrojar un error:
impresión(numero adicional(10, 1, 12, 12, 4, 54, 5)) ## devuelve 98
impresión(numero adicional(14, 54, 5)) # devuelve 73
impresión(numero adicional(10, 5)) # devuelve 15
¿Qué es **kwargs en Python?
Mientras que tanto *args como **kwargs nos permiten pasar un número variable de entradas a funciones, este último es específico para argumentos de palabras clave. En caso de que no lo sepa, los argumentos de palabras clave son solo nombres elegantes para argumentos con un nombre.
Otra característica única de **kwargs es que Python representa el valor como un diccionario.
Cómo usar **kwargs
Al igual que *args, el doble asterisco es la parte importante; puede utilizar cualquier palabra como nombre de parámetro. Aquí hay un ejemplo de cómo usar **kwargs en Python:
definitivamenteasistencia_semanal(**días laborables):
asistentes_totales = 0porasistentesendías laborables.valores():
total_asistentes = total_asistentes + asistentesdevolver asistentes_totales
impresión(asistencia_semanal (lunes = 265, martes = 698, miércoles = 365, jueves = 463, viernes = 234)) # regresa 2025
impresión(asistencia_semanal (lunes = 265, viernes = 234)) # devuelve 499
impresión(asistencia_semanal (miércoles = 365, jueves = 463, viernes = 234)) # devuelve 1062
El fragmento de código anterior también usa un bucle for, pero esta vez con el método de valores() incorporado de Python. Ese método devuelve un objeto de vista de todos los valores en el diccionario. El método de valores() le permite recorrer un diccionario de Python sin problemas
Use argumentos variables para hacer que sus funciones de Python sean flexibles
Los argumentos de función son útiles, pero algunas funciones pueden beneficiarse de aceptar un número variable de argumentos. Los argumentos de palabras clave con nombre pueden hacer que su código sea más legible y fácil de usar. Debe aceptar los argumentos *args y **kwargs de Python. Son bastante simples de usar y con ellos puedes flexibilizar tus funciones y programas.
Al seguir los pasos y los fragmentos de código anteriores, esperamos que ahora pueda usar palabras clave variables y argumentos que no sean palabras clave para sus funciones.