qué patron hacer funciones ejemplo decoradores decoradoras decorador como python function decorator python-decorators

hacer - patron decorator python



¿Aplicando un decorador a una función importada? (1)

Los decoradores son solo azúcar sintáctica para reemplazar un objeto de función con una versión decorada, donde la decoración es solo una llamada (pasando el objeto de función original). En otras palabras, la sintaxis:

@decorator_expression def function_name(): # function body

aproximadamente (*) se traduce a:

def function_name(): # function body function_name = decorator_expression(function_name)

En su caso, puede aplicar su decorador manualmente en su lugar:

from random import randint randint = decorator(randint)

(*) Cuando se usa @<decorator> en una función o clase, el resultado de la def o definición de class no se vincula (se asigna a su nombre en el espacio de nombres actual) primero. Al decorador se le pasa el objeto directamente de la pila, y solo el resultado de la llamada del decorador queda vinculado.

Quiero importar una función:

from random import randint

y luego aplícale un decorador:

@decorator randint

Me preguntaba si había algo de azúcar sintáctica para esto (como lo que tengo arriba), o tengo que hacerlo de la siguiente manera:

@decorator def randintWrapper(*args): return random.randint(*args)