IOKELU
Nivel: Intermedio
💡 Prueba el código:
Puedes ejecutar cualquier ejemplo de esta guía directamente en nuestra consola interactiva: Abrir consola de Python →

Decoradores en Python: funciones que modifican otras funciones

Los decoradores permiten añadir funcionalidad extra a funciones sin modificar su código original. Son muy usados en frameworks como Flask, Django y FastAPI.

1. ¿Qué es un decorador?

Un decorador es una función que recibe otra función y devuelve una versión modificada de ella.

@mi_decorador
def funcion():
    pass

2. Funciones anidadas

Los decoradores se basan en funciones dentro de funciones.

def exterior():
    def interior():
        print("Hola")
    interior()

3. Decorador básico

def mi_decorador(func):
    def envoltura():
        print("Antes de ejecutar")
        func()
        print("Después de ejecutar")
    return envoltura

@mi_decorador
def saludar():
    print("Hola!")

saludar()

4. Decoradores con argumentos

def repetir(n):
    def decorador(func):
        def envoltura():
            for _ in range(n):
                func()
        return envoltura
    return decorador

@repetir(3)
def hola():
    print("Hola")

hola()

5. Decoradores múltiples

def deco1(func):
    def wrap():
        print("D1")
        func()
    return wrap

def deco2(func):
    def wrap():
        print("D2")
        func()
    return wrap

@deco1
@deco2
def prueba():
    print("Función")

prueba()

6. Ejercicios

7. Mini‑proyecto: Logger de funciones

def logger(func):
    def wrap(*args, **kwargs):
        print(f"Ejecutando {func.__name__}")
        resultado = func(*args, **kwargs)
        print(f"Resultado: {resultado}")
        return resultado
    return wrap

@logger
def sumar(a, b):
    return a + b

sumar(5, 7)

8. Preguntas frecuentes

¿Los decoradores se usan en frameworks?

Sí, en Flask, Django, FastAPI y más.

¿Puedo decorar funciones con argumentos?

Sí, usando *args y **kwargs.


Siguiente guía

Generadores en Python →