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
shoutdevuelve unenvolturaque llama a la original.@functools.wrapsconserva el nombre y el docstring envueltos.@shoutencima desaludarla reasigna al wrapper.
Palabras clave y builtins usados aquí
defreturn
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.
Paso 2 de 5 en Decoradores y clausuras; paso 6 de 53 en Python pythónico.