Marque suas funções
Marcar algo significa que você atribuiu a esse algo uma ou mais cadeias de caracteres que funcionam como rótulos. Por exemplo, geralmente marcamos e-mails ou fotos para que possamos procurá-los mais tarde. Você decidiu escrever um decorador que permitirá que você marque suas funções com uma lista arbitrária de tags. Você pode usar essas etiquetas para muitas coisas:
- Adicionar informações sobre quem trabalhou na função, para que um usuário possa procurar a quem perguntar se tiver problemas ao usá-la.
- Rotular as funções como "experimentais" para que os usuários saibam que os inputs e outputs podem mudar no futuro.
- Marcar todas as funções que você planeja remover em uma versão futura do código.
- Etc.
Este exercício faz parte do curso
Como escrever funções em Python
Instruções de exercício
- Defina um novo decorador, chamado
decorator()
, para retornar. - Certifique-se de que a função decorada mantenha seus metadados.
- Chame a função que está sendo decorada e retorne o resultado.
- Retorna o novo decorador.
Exercício interativo prático
Experimente este exercício preenchendo este código de exemplo.
def tag(*tags):
# Define a new decorator, named "decorator", to return
def ____(____):
# Ensure the decorated function keeps its metadata
@____(____)
def wrapper(*args, **kwargs):
# Call the function being decorated and return the result
return ____(____, ____)
wrapper.tags = tags
return wrapper
# Return the new decorator
return ____
@tag('test', 'this is a tag')
def foo():
pass
print(foo.tags)