Saltar al contenido

Decoradores

Python · Unidad 21: Python avanzado

Ya usaste dos decoradores: @dataclass y @property. Un decorador es una función que recibe otra función y entrega una nueva en su lugar.

Sin @ se ve el truco: envuelves la función y guardas el resultado con el mismo nombre.

def gritar(f):
    def envuelta():
        return f().upper()
    return envuelta

def saludo():
    return "hola"

saludo = gritar(saludo)
print(saludo())

Imprime

HOLA

El resto de la explicación está en la lección, que es del plan completo.

Ejercicios de esta lección

Se hacen en la app, que los corrige al momento y explica por qué.

  1. 1. Predice la salida

    ¿Qué imprime este código?

  2. 2. Completa el código

    Completa para que el decorador entregue el doble de lo que regrese la función.

  3. 3. Predice la salida

    ¿Qué imprime este código?

  4. 4. Encuentra el bug

    Debería imprimir 30, el precio por 2. ¿Qué línea tiene el error?

  5. 5. Completa el código

    Completa para que saludo no pierda su nombre.

  6. 6. Ordena las líneas

    Ordena para que saludo regrese el saludo en mayúsculas.

  7. 7. Opción múltiple

    ¿Qué significa la línea @gritar de este código?

  8. 8. Predice la salida

    ¿Qué imprime este código?

Hacer esta lección

Se abre en el navegador. Esta lección es del plan completo; la primera unidad de cada curso es gratis.

Ver todas las lecciones →