
O Decorator são utilizados para alterar o comportamento de uma função ou classe sem precisar alterá-la, simplesmente adicionando um @nomeDecorator.
O Decorator pode ser comparado com um Interceptor no mundo Web, onde interceptamos a requisição antes de executar o método.
Muito útil para criação de validação de campos como CPF, RG, Telefone, Idade, Nome, entre outros, sem precisar alterar o método principal.
Outra coisa legal é utilizar o Decorator para deixar seu código mais limpo, umas vez que você desacopla partes do código do método.
Por trabalhar com Clojures, ou seja, funções dentro de funções, o retorno será a própria função.
Acesse o tutorial completo em: https://nakatech.herokuapp.com/article/pyDecorator.html.