O conceito de decoradores em Python é uma solução elegante para expandir a funcionalidade de funções ou métodos, sem alterá-los diretamente. Esta poderosa técnica permite que você adicione código adicional para, por exemplo, habilitar a registragem ou modificar o comportamento de funções existentes. Neste guia, você aprenderá como os decoradores funcionam e como usá-los de forma eficaz.
Principais descobertas
Decoradores são funções que aceitam outra função como argumento e retornam uma nova função. Eles são frequentemente usados para:
- Modificar o comportamento de funções.
- Registrar funções.
- Expandir métodos de classes.
Guia passo a passo
O que é um decorador?
Vamos começar com a definição de um decorador simples. Um decorador é essencialmente uma função que recebe outra função e a expande ou modifica.

Começando com um exemplo
Suponha que você queira expandir a funcionalidade de uma função existente. Crie uma função chamada LogDecorator, que simplesmente adiciona informações de registro. Você passará essa função como parâmetro para a função a ser decorada.
Dentro do decorador
Dentro da sua função decoradora, você define uma segunda função que gerencia o registro. Esta função chamará a função original e retornará seus resultados.
Finalizando a função decoradora
Você deve projetar o decorador para que ele retorne a função interna, em vez de chamá-la imediatamente. Isso mantém a função original inalterada e pode ser chamada a qualquer momento.
Aplicando o decorador
Agora você pode aplicar o decorador a uma função. Pegue, por exemplo, uma função simples adicionar, que soma dois números. Você pode declarar o LogDecorator antes da função.

Usando a função
Chame a função decorada e observe qual resultado é retornado. O decorador será ativado automaticamente e executará o registro, enquanto a função original continuará funcionando.

Múltiplos decoradores
A beleza dos decoradores é que você pode aplicar múltiplos decoradores a uma função. Se você, por exemplo, criar um QuadratDecorator que eleva o resultado ao quadrado, você também pode aplicar esse decorador à mesma função.

Ordem dos decoradores
Esteja ciente da ordem em que os decoradores são aplicados. O decorador mais próximo da função é executado primeiro. Se você, por exemplo, colocar o QuadratDecorator antes do LogDecorator, o resultado será quadrado primeiro e depois registrado.

Objetivo dos decoradores
Os decoradores não são apenas um recurso legal, mas também solucionam problemas no desenvolvimento de software. Eles permitem que você modularize funções e ajudam a evitar código repetido. Isso torna seu código mais limpo e fácil de manter.

Resumo – Entender e aplicar decoradores em Python
Os decoradores são um conceito poderoso em Python que ajuda a expandir e modificar funções sem alterar seu código diretamente. Ao aplicar decoradores, você pode tornar seu código mais flexível e claro.
Perguntas frequentes
O que são decoradores em Python?Decoradores são funções que aceitam outra função como entrada e a expandem ou modificam.
Como posso definir um decorador?Você define uma função que aceita outra função e retorna uma nova função.
Por que devo usar decoradores?Decoradores ajudam a evitar código repetido, melhoram a modularidade e a legibilidade do seu código.
Posso aplicar múltiplos decoradores a uma função?Sim, você pode aplicar múltiplos decoradores a uma função, sendo a ordem importante.
O que acontece se eu mudar a ordem dos decoradores?A execução dos decoradores ocorre na ordem em que são declarados. Isso afeta o resultado final.