Обёртка вокруг функции
Вы хотите, чтобы перед приветствием была написана одна строка. Вы вызываете greet с kai. Первая строка на экране будет door. Вторая строка будет 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"))
На экране две строки. Первая строка — 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: на экране две строки. Следующая страница пишет тип рядом с именем.
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху