Metaprogramação em Python: Decorators
Gabarito: letra D. O recurso que permite envolver uma função existente com lógica adicional de forma transparente, sem alterar seu código interno, é o decorator (sintaxe @). Decorators são um padrão de metaprogramação que recebem uma função como argumento e retornam uma nova função com comportamento estendido.
Alternativa A — ❌ Incorreta
List Comprehension é uma construção sintática para criar listas de forma concisa ([x for x in iterable]). Não se aplica a envolver funções com lógica adicional.
Alternativa B — ❌ Incorreta
Generators são funções que utilizam yield para produzir uma sequência sob demanda. Embora sejam um recurso poderoso, não têm relação com adicionar comportamento a funções existentes.
Alternativa C — ❌ Incorreta
Type Hinting (anotações de tipo) servem para indicar tipos esperados de parâmetros e retornos, mas não alteram o comportamento em tempo de execução e não permitem envolver funções.
Alternativa D — ✅ Correta ⟵ GABARITO
Decorators são o recurso clássico de metaprogramação em Python. Um decorator é uma função que recebe outra função e retorna uma versão modificada dela, permitindo adicionar lógica (como logging, auditoria, temporização) de forma transparente, usando a sintaxe @nome_do_decorator.
Alternativa E — ❌ Incorreta
Context Managers (gerenciadores de contexto) são usados com a declaração with para gerenciar recursos (abrir/fechar arquivos, conexões). Embora possam ser implementados via decorators ou classes, o conceito em si não é o recurso para envolver funções com lógica adicional.
Gabarito: letra D.