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-DivesMódulo 2 · Componentes internos e desempenho do CPythoncontextlib.contextmanagerpredict21 / 161
+75 XP
Tarefa
📝 **Pergunta:** Preveja o resultado exato. \`track\` é um gerador de \`@contextmanager\` que imprime \`enter:\` / \`exit:\` e possui um braço \`except ValueError\`. O primeiro bloco \`with\` é uma execução limpa. O segundo gera \`ValueError("oops")\` dentro do corpo — o programa trava antes de \`print("done")\` ou o \`with\` o engole? 📋 Escolha a resposta certa. 💡 **Dica:** Releia a teoria acima se não tiver certeza.
Prevê a saída

Lê o código com atenção

from contextlib import contextmanager


@contextmanager
def track(label):
    print(f"enter:{label}")
    try:
        yield label.upper()
    except ValueError as e:
        print(f"caught:{e}")
    finally:
        print(f"exit:{label}")


with track("a") as t:
    print(f"body:{t}")

with track("b") as t:
    print(f"body:{t}")
    raise ValueError("oops")

print("done")

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…