Um decorador é uma função que envolve outra função para adicionar comportamento sem modificar o código original. É aplicado com a sintaxe @decorator acima de uma função — uma forma limpa de adicionar cross-cutting concerns como logging, timing, caching ou controle de acesso.
Como decoradores funcionam
():
():
()
result = func(*args, **kwargs)
()
result
wrapper
():
()
greet()
