Помечайте функции тегами
Присвоить тег — значит снабдить что-либо одной или несколькими строками-метками. Например, мы часто помечаем письма или фотографии тегами, чтобы потом легко их найти. Вы решили написать декоратор, который позволит помечать функции произвольным набором тегов. Такие теги можно использовать по-разному:
- Добавлять информацию об авторах функции, чтобы пользователь знал, к кому обратиться в случае затруднений.
- Помечать функции как «экспериментальные», предупреждая пользователей о том, что входные и выходные данные могут измениться в будущем.
- Отмечать функции, которые планируется удалить в следующей версии кода.
- И так далее.
Это упражнение является частью курса
Написание функций на Python
Инструкции к упражнению
- Определите новый декоратор с именем
decorator(), который нужно вернуть. - Убедитесь, что декорированная функция сохраняет свои метаданные.
- Вызовите декорируемую функцию и верните результат.
- Верните новый декоратор.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
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)