Modificación de Funciones
En programación, las funciones son herramientas dinámicas que pueden adaptarse a diferentes situaciones y necesidades. No son solo bloques de código fijos. Puedes mejorar las funciones para hacerlas más versátiles y fáciles de usar en diversos contextos.
En este capítulo, exploraremos algunas técnicas importantes para modificar funciones, como el uso de argumentos por defecto y argumentos con nombre.
Comencemos con un ejemplo sencillo de modificación de funciones para mejorar su utilidad en nuestro sistema de gestión de tienda de comestibles:
Argumentos por Defecto
Los argumentos por defecto son una característica útil en Python que permite especificar valores predeterminados para los parámetros de una función.
En la función apply_discount()
, el parámetro discount
se establece en 0.10
por defecto. Esto significa que la función aplicará automáticamente un 10% de descuento a menos que se indique lo contrario. Como se observa en la variable default_discount_price
, podemos llamar a la función solo con el parámetro price
.
Sin embargo, si es necesario, podemos sobrescribir el valor por defecto pasando tanto el price
como un discount
personalizado (por ejemplo, 0.20
para un 20%) como se demuestra con la variable custom_discount_price
.
# Define a function with a default `discount` argument def apply_discount(price, discount=0.10): discounted_price = price * (1 - discount) return discounted_price # Call the function without providing a `discount`, using the default value default_discount_price = apply_discount(100) print(f"Price after applying the default discount: ${default_discount_price}") # Call the function with a custom `discount` value custom_discount_price = apply_discount(100, 0.20) print(f"Price after applying a custom discount: ${custom_discount_price}")
Argumentos por palabra clave
Los argumentos por palabra clave en Python permiten pasar argumentos nombrando explícitamente cada parámetro, lo que hace que las llamadas a funciones sean más legibles y flexibles. Esto es especialmente útil cuando una función tiene múltiples parámetros o cuando el orden de los argumentos puede resultar confuso.
En el siguiente ejemplo, tanto price
como discount
se especifican, mientras que el parámetro tax
permanece con su valor predeterminado, proporcionando flexibilidad sin perder claridad.
# Function where `tax` has a default value def calculate_total(price, discount, tax=0.05): total = price * (1 + tax) * (1 - discount) return total # Calling the function using keyword arguments total_cost = calculate_total(price=100, discount=0.15) print(f"Total cost after applying discount: ${total_cost}")
Nota
El orden de los parámetros no importa cuando se pasan utilizando argumentos por palabra clave.
Swipe to start coding
Crear funciones para calcular el costo total de un producto aplicando un descuento y impuesto, utilizando argumentos por palabra clave y valores predeterminados para mayor flexibilidad.
- Definir
apply_discount(price, discount=0.05)
→ Devuelve el precio después de aplicar el descuento. - Definir
apply_tax(price, tax=0.07)
→ Devuelve el precio después de agregar el impuesto. - Definir
calculate_total(price, discount=0.05, tax=0.07)
→ Utilizaapply_discount()
yapply_tax()
para devolver el precio total con descuento e impuesto aplicados. - Llamar a
calculate_total(120)
usando el descuento e impuesto predeterminados. - Llamar a
calculate_total(100, discount=0.10, tax=0.08)
usando valores personalizados mediante argumentos por palabra clave.
Requisitos de salida
- Imprimir el resultado con valores predeterminados:
Total cost with default discount and tax: $<total_price_default>
- Imprimir el resultado con valores personalizados:
Total cost with custom discount and tax: $<total_price_custom>
Nota
Al definir funciones, colocar primero los parámetros obligatorios, seguidos de los parámetros con valores predeterminados.
Al llamar funciones con argumentos por palabra clave, los argumentos posicionales deben ir antes que los argumentos por palabra clave.
Solución
¡Gracias por tus comentarios!