Загрузка...

Обёртка вокруг функции

Вы хотите, чтобы перед приветствием была написана одна строка. Вы вызываете greet с kai. Первая строка на экране будет door. Вторая строка будет hi kai.

door перед приветствием

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

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

print(greet("kai"))

На экране две строки. Первая строка — door. Вторая строка — hi kai. Вы написали print(greet("kai")). Этот запуск не начинается со строки return внутри greet. @announce ставит wrapped вокруг greet, поэтому greet("kai") сначала запускает wrapped. print внутри wrapped пишет door. Затем wrapped запускает приветствие, и приветствие возвращает hi kai. print вокруг greet("kai") пишет эту вторую строку. Программа завершается. Третьей строки нет.

door — не приветствие. Приветствие — hi kai. Если бы строки @announce над greet не было, print(greet("kai")) написал бы только hi kai. Это не та программа, что у вас. В вашей программе есть @announce, поэтому первая строка — door, а вторая — hi kai.

Теперь вы можете поставить обёртку вокруг функции, чтобы одна строка шла раньше собственной строки функции. На экране сначала door, потом hi kai. Следующая страница пишет тип рядом с именем.

Одна строка перед приветствием

print внутри wrapped пишет door, потом приветствие пишет hi kai: на экране две строки. Следующая страница пишет тип рядом с именем.

🧠 Проверьте Свои Знания

Готов к Началу

Проверьте Свои Знания

Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему

❓
5
Вопросы
🎯
70%
Для Прохождения
♾️
∞
Время
🔄
∞
Попытки

📝 Инструкции

  • Внимательно прочитайте каждый вопрос
  • Выберите лучший ответ на каждый вопрос
  • Вы можете пересдавать тест столько раз, сколько захотите
  • Ваш прогресс будет показан вверху