НачатьНачать бесплатно

Помечайте функции тегами

Присвоить тег — значит снабдить что-либо одной или несколькими строками-метками. Например, мы часто помечаем письма или фотографии тегами, чтобы потом легко их найти. Вы решили написать декоратор, который позволит помечать функции произвольным набором тегов. Такие теги можно использовать по-разному:

  • Добавлять информацию об авторах функции, чтобы пользователь знал, к кому обратиться в случае затруднений.
  • Помечать функции как «экспериментальные», предупреждая пользователей о том, что входные и выходные данные могут измениться в будущем.
  • Отмечать функции, которые планируется удалить в следующей версии кода.
  • И так далее.

Это упражнение является частью курса

Написание функций на 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)
Редактировать и запускать код