
El Principio DRY (Don’t Repeat Yourself)
Imagina que tienes un c谩lculo complejo para el impuesto de tus productos. Si tienes que escribir esa f贸rmula 20 veces en diferentes partes de tu c贸digo, y luego el gobierno cambia la tasa de impuestos, tendr谩s que buscar y corregir 20 lugares. Eso es ineficiente y peligroso.
Las Funciones te permiten encapsular esa l贸gica en un solo lugar y reutilizarla infinitas veces invoc谩ndola por su nombre. Es como crear tus propios comandos personalizados en Python.
Anatom铆a de una Funci贸n
Se definen con la palabra clave `def`, seguida de un nombre, par茅ntesis para los par谩metros (inputs) y dos puntos. El cuerpo de la funci贸n va indentado. Generalmente, una funci贸n devuelve un resultado con `return`.
def calcular_precio_final(precio_base, impuesto=0.21, descuento=0):
"""
Calcula el precio final aplicando impuesto y restando descuento.
"""
precio_con_impuesto = precio_base * (1 + impuesto)
precio_final = precio_con_impuesto - descuento
return precio_final
# Uso de la funci贸n
producto_a = calcular_precio_final(100) # Usa impuesto por defecto (0.21)
producto_b = calcular_precio_final(200, impuesto=0.10, descuento=5)
print(f"Precio A: {producto_a}")
print(f"Precio B: {producto_b}")
Beneficios para el Emprendedor
Modularidad
Divide problemas grandes en piezas peque帽as y manejables. Puedes tener una funci贸n `obtener_datos()`, otra `procesar_datos()` y otra `enviar_reporte()`.
Mantenibilidad
Si la l贸gica cambia (ej. cambia la f贸rmula de impuestos), solo actualizas el c贸digo en un lugar (dentro de la funci贸n) y todo tu sistema se actualiza autom谩ticamente.
Legibilidad
Leer `enviar_factura(cliente)` es mucho m谩s claro que leer 50 l铆neas de c贸digo crudo que hacen el env铆o.
Scope (Alcance) de Variables
Es vital entender que las variables creadas dentro de una funci贸n son locales. No existen fuera de ella. Esto protege tus datos globales de ser modificados accidentalmente por una funci贸n auxiliar.
def saludo():
mensaje = "Hola" # Variable local
return mensaje
print(saludo()) # Funciona
# print(mensaje) # Error! 'mensaje' no existe aqu铆 fuera