Подтвердить что ты не робот

Применение декоратора к импортированной функции?

Я хочу импортировать функцию:

from random import randint

а затем примените к нему декоратор:

@decorator
randint

Мне было интересно, есть ли для этого какой-то синтаксический сахар (например, что у меня выше), или мне нужно сделать это следующим образом:

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

Ответ 1

Декораторы - это просто синтаксический сахар, чтобы заменить функциональный объект украшенной версией, где декорирование - это просто вызов (передача в исходном объекте функции). Другими словами, синтаксис:

@decorator_expression
def function_name():
    # function body

переводит на:

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

В вашем случае вы можете применить свой декоратор вручную вместо:

from random import randint

randint = decorator(randint)