Самый простой пример. У нас есть функции. Декоратор всегда возвращает результат функции, деленный на 2
>>> def dec(f):
... def inner(*args, **kwargs):
... return f(*args, **kwargs) / 2.
... return inner
...
>>>
>>> @dec
... def add(a, b):
... return a + b
...
>>> add(1,23)
12.0
>>>
Более сложные примеры. Например, удобно использовать декораторы для постраничного вывода объектов. Допустим, сферический пример для веб-фреймворка. У нас есть view, который возвращает список найденных объектов, а вывод происходит по 10 объектов на страницу.
@pagination(10)
def view(request):
...
return Response('my_template.pt', context=[ob_list])