Декоратор просто возвращает функцию под ним, обернутую вокруг функции декоратора. Другими словами, это:
@some_decorator
def some_function():
# some code
Эквивалентно:
some_function = some_decorator(some_function)
Это означает, что вы можете программно «украсить» функцию, написав:
if some_condition:
some_function = some_decorator(some_function)