single
Combinación de Argumentos Arbitrarios Posicionales y de Palabras Clave
Desliza para mostrar el menú
Considera una función que calcula el costo total de múltiples artículos, permitiendo pasar cualquier cantidad de precios y configuraciones opcionales mediante palabras clave, como descuentos o impuestos.
12345678910111213141516171819202122232425def calculate_total_cost(*prices, **settings): subtotal = sum(prices) discount = settings.get("discount", 0) tax = settings.get("tax", 0) discount_amount = subtotal * (discount / 100) taxed_amount = (subtotal - discount_amount) * (1 + tax / 100) print(f"Subtotal: ${subtotal:.2f}") if discount > 0: print(f"Discount: {discount}% (-${discount_amount:.2f})") else: print("No discount applied.") if tax > 0: print(f"Tax: {tax}% (+${taxed_amount - (subtotal - discount_amount):.2f})") print(f"Final total: ${taxed_amount:.2f}") print() # Examples of using the function calculate_total_cost(1000, 250, 50) calculate_total_cost(1200, 800, discount=10) calculate_total_cost(500, 750, 250, discount=5, tax=8)
Reglas para combinar argumentos arbitrarios
Argumentos arbitrarios posicionales (*args)
*args recopila todos los argumentos posicionales adicionales en una tupla.
En este ejemplo, la función puede recibir cualquier cantidad de precios de artículos sin necesidad de definirlos explícitamente.
Por ejemplo:
calculate_total_cost(500, 250, 100)
Aquí, *prices se convierte en (500, 250, 100).
Argumentos arbitrarios por palabra clave (**kwargs)
**kwargs recopila todos los argumentos nombrados (por palabra clave) en un diccionario.
Esto permite que la función acepte configuraciones adicionales nombradas como discount o tax, incluso si no fueron predefinidas.
Por ejemplo:
calculate_total_cost(1000, 500, discount=10, tax=5)
Aquí, **settings se convierte en {'discount': 10, 'tax': 5}.
Combinación de ambos
Se pueden usar tanto *args como **kwargs en la misma función para lograr máxima flexibilidad, permitiendo manejar cualquier cantidad de valores posicionales y cualquier combinación de configuraciones nombradas.
Siempre coloca *args antes de **kwargs en la firma de la función; invertir el orden resultará en un SyntaxError.
Desliza para comenzar a programar
Implementar una función generate_report que acepte cualquier cantidad de puntuaciones numéricas y configuraciones opcionales mediante palabras clave.
- Utilizar
*argspara recopilar las puntuaciones (nombrar el parámetro comoscores) y**kwargspara recopilar las configuraciones opcionales. - Calcular el promedio de todas las puntuaciones proporcionadas.
- Si la clave
"label"está presente en**kwargs, usar su valor como título del informe; de lo contrario, usar"Report". - Si la clave
"passing_score"está presente en**kwargs, comprobar si el promedio cumple o supera ese valor:- Si es así, agregar
"Status: Pass"al informe. - Si no, agregar
"Status: Fail".
- Si es así, agregar
- Devolver el resultado como una cadena formateada:
"{label} | Average: {avg:.2f} | {status}". Si no se proporciona"passing_score", omitir la parte del estado:"{label} | Average: {avg:.2f}".
Solución
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla