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.
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
Teste Seu Conhecimento
Desafie-se com este questionário interativo e veja o quão bem você entende o tópico
📝 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