¿Qué son los decoradores en Python?

| Última modificación: 17 de marzo de 2025 | Tiempo de Lectura: 3 minutos
Premios Blog KeepCoding 2025

Full Stack Developer y Responsable de Formación base en KeepCoding.

Los decoradores en Python son una característica que, bien usada, puede llegar a ser muy poderosa y versátil dentro de este lenguaje. De seguro programando te habrás encontrado con una curiosa @ encima de alguna función y te habrás preguntado para qué sirve. Pues bien, eso es un decorador y, en palabras simples, los decoradores en python son funciones que toman otra función como argumento y le añaden funcionalidades, todo esto sin alterar el código original de esta función.

El día de hoy queremos contarte más detalladamente qué son los decoradores en python y cómo usarlos.

¿Qué son los decoradores en python?

Los decoradores en python son funciones que reciben como entrada otra función, modifican su comportamiento y luego de eso la devuelven. Se usan para extender funcionalidades a funciones que ya existen sin la tediosa necesidad de modificar su código base. Es como si añadieras una cpaa extra sobre la función , lo quemejora su capacidad sin tocar su núcleo.

La sintaxis básica de los decoradores en Python es:

def mi_decorador(funcion):
def funcion_interna():
print("Antes de ejecutar la función")
funcion()
print("Después de ejecutar la función")
return funcion_interna

En este ejemplo mi_decorador es una función que recibe como argumento otra función (llamada funcion), la envuelve dentro de funcion_interna y agrega una funcionalidad adicional, como imprimir mensajes antes y después de su ejecución.

Aprende a usar decoradores en Python

Una vez creado el decorador, lo utilizamos con la sintaxis @decorador. Veamos un ejemplo sobre cómo decorar una función:

@mi_decorador
def saludar():
print("Hola, mundo")

saludar()

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

La salida de este código sería:

Antes de ejecutar la función
Hola, mundo
Después de ejecutar la función

Como puedes ver, el decorador añade los mensajes «Antes de ejecutar la función» y «Después de ejecutar la función» a la ejecución de la función saludar sin modificar su contenido original.

Tipos de decoradores en Python

Cada uno de los decoradores en Python sirve a una función específica. Veamos un poco cómo se dividen:

  • Decoradores sin parámetros: Estos son los más simples en la cadena, ya que solo reciben una función como argumento y añaden funcionalidades adicionales. El ejemplo de mi_decorador fue uno básico de esta categoría.
  • Decoradores con parámetros: estos nos permiten añadir funcionalidades más dinámicas al recibir parámetros adicionales. Veamos cómo hacerlo por medio de un ejemplo:
def repetir(n):
def decorador(funcion):
def funcion_interna(*args, **kwargs):
for _ in range(n):
funcion(*args, **kwargs)
return funcion_interna
return decorador

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

decir_hola()

En este caso el decorador repetir ejecuta la función decir_hola tres veces, porque le hemos pasado el parámetro n=3. La salida sería:

Hola
Hola
Hola
  • Decoradores para medir el tiempo de ejecución: es decir, para medir el tiempo que tarda una función en ejecutarse:
import time

def medir_tiempo(funcion):
def funcion_interna(*args, **kwargs):
inicio = time.time()
resultado = funcion(*args, **kwargs)
fin = time.time()
print(f"Tiempo de ejecución: {fin - inicio} segundos")
return resultado
return funcion_interna

@medir_tiempo
def suma(a, b):
time.sleep(1) # Simula un retraso de 1 segundo
return a + b

suma(5, 10)

Aquí, el decorador medir_tiempo calcula cuánto tiempo tarda en ejecutarse la función suma.

El resultado se vería algo similar a esto:

decoradores en python ejemplo

Decoradores integrados en Python

Python también cuenta con varios decoradores integrados que puedes usar sin necesidad de crearlos tú mismo. Algunos de los más comunes son:

  • @staticmethod: Convierte un método en estático, lo que significa que no necesita una instancia de la clase para ser llamado.
  • @classmethod: Permite que un método de clase reciba la propia clase como primer argumento, en lugar de una instancia de la clase.
  • @property: Convierte un método en un atributo de solo lectura.

Si te ha gustado este tema y quieres seguir aprendiendo sobre diferentes áreas de la programación y lenguajes, inscríbete en el bootcamp de programación para principiantes que tiene Keepcoding para ti. Allí darás los pasos en este mundillo y verás cómo se abren puertas nuevas en tu camino con excelentes oportunidades. ¡Inspírate y sigue tus sueños ahora!

Noticias recientes del mundo tech

¡CONVOCATORIA ABIERTA!

Aprende a Programar desde Cero

Full Stack Jr. Bootcamp

Clases en Directo | Acceso a +600 empresas | 98,51% empleabilidad

Fórmate con planes adaptados a tus objetivos y logra resultados en tiempo récord.
KeepCoding Bootcamps
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.