Saltar para o conteúdo principal
🔒 Modo de pré-visualização. As primeiras quinze aulas de Foundations são grátis; esta é Pro. Inicie um trial de 7 dias para desbloquear o editor, as dicas AI e o resto do programa. Cartão necessário, cancele a qualquer momento no Dashboard.Iniciar trial de 7 dias →
← CursosSenior Deep-DivesModule 11 · Decorator patterns at scaleDecorator stacking — TOP wraps last, runs firstpredict151 / 161
+150 XP
Tarefa
📝 **Tarefa:** Prever a saída de 8 linhas. Três decoradores `@trace(...)` empilhados em `work()`. Cada wrapper imprime `>{name}` na entrada e `<{name}` na saída. Rastreie a ordem de chamada: o mais externo entra primeiro, o mais interno executa a função real, o mais interno sai primeiro, o mais externo sai por último. 📋 Implemente a função acima. Os testes são executados automaticamente. 💡 **Dica:** Releia a teoria se tiver dúvidas.
Prevê a saída

Lê o código com atenção

from functools import wraps


def trace(name: str):
    def decorator(fn):
        @wraps(fn)
        def wrapper(*args, **kwargs):
            print(f">{name}")
            result = fn(*args, **kwargs)
            print(f"<{name}")
            return result
        return wrapper
    return decorator


@trace("outer")
@trace("middle")
@trace("inner")
def work() -> str:
    print("work")
    return "ok"


result = work()
print(f"result: {result}")

O que o programa vai imprimir? Escreve aqui:

💬 Discussão

Seja o primeiro a fazer uma pergunta ou compartilhar uma dica.
Faça login para entrar na discussão. A leitura é gratuita.
Carregando discussão…