typestar

Escribir un decorador en Python

Envolver una función para agregarle comportamiento alrededor.

import functools


def shout(fn):
    @functools.wraps(fn)
    def envoltura(*args, **kwargs):
        resultado = fn(*args, **kwargs)
        return resultado.upper() + "!"
    return envoltura


@shout
def saludar(nombre):
    return f"hola {nombre}"


fuerte = saludar("mundo")

Cómo funciona

  1. shout devuelve un envoltura que llama a la original.
  2. @functools.wraps conserva el nombre y el docstring envueltos.
  3. @shout encima de saludar la reasigna al wrapper.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
17
Caracteres a escribir
248
Tokens
71
Ritmo de tres estrellas
100 tpm

Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 43 segundos.

Escribe este fragmento

Paso 2 de 5 en Decoradores y clausuras; paso 6 de 53 en Python pythónico.

← Anterior Siguiente →