Entenda como usar o decorator em Python para otimizar seu código
Neste artigo, discutimos como criar e aplicar um decorator em Python.
Glossário
Criando e aplicando um decorator em Python
Entenda como usar o decorator em Python para otimizar seu código
Decorators são uma funcionalidade poderosa em Python que permitem adicionar funcionalidades extras a uma função existente sem modificar seu código fonte. Um decorator é uma função que recebe outra função como argumento e retorna uma nova função com a adição das funcionalidades desejadas.
Para criar um decorator em Python:
Você pode utilizar a sintaxe de “@”. Por exemplo, suponha que você queira adicionar um log de tempo de execução a uma função. Você pode criar um decorator chamado @log_tempo
, que recebe uma função como argumento, registra o tempo de início e fim da execução, e imprime o tempo total. Veja o exemplo abaixo:



import time
def log_tempo(funcao):
def wrapper(*args, **kwargs):
inicio = time.time()
resultado = funcao(*args, **kwargs)
fim = time.time()
tempo_total = fim - inicio
print(f"A função {funcao.__name__} levou {tempo_total:.2f} segundos para ser executada.")
return resultado
return wrapper
@log_tempo
def minha_funcao():
# Código da função aqui
pass
Ao utilizar o decorator @log_tempo
antes da definição da função minha_funcao
, toda vez que a função for chamada, o decorator irá registrar o tempo de execução e imprimir na tela o tempo total.
Melhores práticas para otimizar seu código com decorators em Python
- Escolha nomes descritivos para seus decorators: Dê nomes que reflitam claramente a funcionalidade adicionada pelo decorator. Isso facilitará a compreensão do código por outros desenvolvedores.
- Documente seus decorators: Inclua comentários ou docstrings que expliquem como o decorator funciona, quais argumentos ele recebe e como utilizá-lo corretamente.
- Mantenha a assinatura original da função: Seu decorator deve manter a assinatura original da função, tanto em termos de argumentos quanto de retorno. Isso garantirá que a função decorada possa ser chamada da mesma forma que a original.
- Use a biblioteca functools: A biblioteca functools oferece funções auxiliares úteis para lidar com decorators em Python. Por exemplo, a função
wraps
permite copiar os metadados da função original para a função decorada, facilitando a depuração e o entendimento do código. - Evite a aplicação excessiva de decorators: Aplicar um grande número de decorators em uma função pode tornar o código confuso e difícil de entender. Portanto, utilize os decorators com moderação e sempre priorize a clareza e a simplicidade do código.
Aprenda com exemplos e projetos existentes
Uma ótima maneira de aprimorar suas habilidades com decorators em Python é estudar exemplos e projetos que utilizam essa técnica. Aproveite esses recursos para aprender com as melhores práticas e entender como outros desenvolvedores estão usando decorators em seus projetos.
Conclusão
O uso de decorators em Python é uma técnica poderosa que permite adicionar funcionalidades extras a funções existentes de forma simples e elegante. Entenda como usar o decorator em Python para otimizar seu código e aproveite seus benefícios, como a melhoria da organização do código, a facilidade na reutilização de trechos de código e a promoção da separação de preocupações. Seguindo melhores práticas e explorando as funcionalidades avançadas dos decorators, você poderá desenvolver aplicações mais eficientes e de fácil manutenção em Python. Experimente aplicar decorators em seus projetos e veja como eles podem otimizar seu código!



A Awari é a melhor plataforma para aprender sobre programação no Brasil.
Aqui você encontra cursos com aulas ao vivo, mentorias individuais com os melhores profissionais do mercado e suporte de carreira personalizado para dar seu próximo passo profissional e aprender habilidades como Data Science, Data Analytics, Machine Learning e mais.
Já pensou em aprender de maneira individualizada com profissionais que atuam em empresas como Nubank, Amazon e Google? Clique aqui para se inscrever na Awari e começar a construir agora mesmo o próximo capítulo da sua carreira em dados.


