typestar

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

  1. repeat(veces) devuelve el decorador de verdad.
  2. Ese decorador envuelve la función como siempre.
  3. @repeat(veces=3) corre el cuerpo tres veces.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 5 en Decoradores y clausuras; paso 7 de 53 en Python pythónico.

← Anterior Siguiente →