Carregando...

Invólucro de uma função

Você quer uma linha escrita antes de uma saudação. Você chama greet com kai. A primeira linha na tela será door. A segunda linha será hi kai.

door antes da saudação

python
def announce(fn):
    def wrapped(name):
        print("door")
        return fn(name)
    return wrapped

@announce
def greet(name):
    return "hi " + name

print(greet("kai"))

A tela mostra duas linhas. A primeira linha é door. A segunda linha é hi kai. Você escreveu print(greet("kai")). Essa execução não começa na linha return dentro de greet. @announce coloca wrapped em volta de greet, então greet("kai") executa wrapped primeiro. O print dentro de wrapped escreve door. Depois wrapped executa a saudação, e a saudação devolve hi kai. O print em volta de greet("kai") escreve essa segunda linha. O programa termina. Não há terceira linha.

door não é a saudação. A saudação é hi kai. Se a linha @announce não estivesse acima de greet, print(greet("kai")) escreveria só hi kai. Esse programa não é este. Este programa tem @announce, então a primeira linha é door e a segunda linha é hi kai.

Agora você pode colocar um invólucro em volta de uma função para que uma linha rode antes da linha própria da função. A tela mostra door e depois hi kai. A próxima página escreve um tipo ao lado de um nome.

Uma linha antes da saudação

O print dentro de wrapped escreve door, depois a saudação escreve hi kai: a tela tem duas linhas. A próxima página escreve um tipo ao lado de um nome.

🧠 Teste Seu Conhecimento

Pronto para Começar

Teste Seu Conhecimento

Desafie-se com este questionário interativo e veja o quão bem você entende o tópico

❓
5
Perguntas
🎯
70%
Para Passar
♾️
∞
Tempo
🔄
∞
Tentativas

📝 Instruções

  • Leia cada pergunta cuidadosamente
  • Selecione a melhor resposta para cada pergunta
  • Você pode refazer o quiz quantas vezes quiser
  • Seu progresso será mostrado no topo