Decoradores con argumentos en Python
Una fábrica de decoradores: una capa más para aceptar parámetros.
import functools
def repeat(veces):
def decorador(fn):
@functools.wraps(fn)
def envoltura(*args, **kwargs):
return [fn(*args, **kwargs) for _ in range(veces)]
return envoltura
return decorador
@repeat(veces=3)
def tirar():
return "voltereta"
tiros = tirar()
Cómo funciona
repeat(veces)devuelve el decorador de verdad.- Ese decorador envuelve la función como siempre.
@repeat(veces=3)corre el cuerpo tres veces.
Palabras clave y builtins usados aquí
defforrangereturn
El intento, en números
- Líneas
- 18
- Caracteres a escribir
- 263
- Tokens
- 74
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 42 segundos.
Paso 3 de 5 en Decoradores y clausuras; paso 7 de 53 en Python pythónico.