Выбор ответа Junior Декораторы спрашивают часто обновлено
Декоратор без return в обёртке
Вопрос
Что вернёт add(2, 3)?
def log(func):
def wrapper(*args, **kwargs):
print('call', func.__name__)
func(*args, **kwargs)
return wrapper
@log
def add(a, b):
return a + b
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: None. Обёртка вызывает func(args), но не возвращает результат, а функция без return возвращает None.
Варианты ответа
5Noneправильный ответTypeError- Функцию
wrapper
Разбор
Обёртка вызывает func(*args), но не возвращает результат, а функция без return возвращает None. Это самая частая ошибка при написании декоратора на собесе. Исправление: return func(*args, **kwargs).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.