Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Combinación de Argumentos Arbitrarios Posicionales y de Palabras Clave | Argumentos Arbitrarios
Tutorial de Funciones en Python
Sección 3. Capítulo 3
single

single

bookCombinació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.

12345678910111213141516171819202122232425
def 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)
copy

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.

Note
Nota

Siempre coloca *args antes de **kwargs en la firma de la función; invertir el orden resultará en un SyntaxError.

Tarea

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.

  1. Utilizar *args para recopilar las puntuaciones (nombrar el parámetro como scores) y **kwargs para recopilar las configuraciones opcionales.
  2. Calcular el promedio de todas las puntuaciones proporcionadas.
  3. Si la clave "label" está presente en **kwargs, usar su valor como título del informe; de lo contrario, usar "Report".
  4. 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".
  5. 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

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 3
single

single

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

some-alt