#python
Вопрос:
Я столкнулся с проблемой для декоратора python.
Вопрос в следующем: Создайте декоратор,который отвечает за умножение 2 чисел (скажем, a, b), это умножение чисел дает другое число(скажем, c).
Затем необходимо создать фактическую функцию,которая выполняет суммирование a, b и c. Что-то вроде:
Декоратор : a*b =gt; c
Фактическая функция: a b c
Я дошел до этой стадии:
def my_decorator(func): def addition(a,b): c = a*b return c return addition @my_decorator def actual_func(a,b): return a b c
Но это все время приводит к ошибкам.
Комментарии:
1. Объяснение, которое вы даете, не объясняет, как декоратор и оформленная функция должны сочетаться друг с другом. Должно ли возвращаемое значение декоратора вызывать функцию?
Ответ №1:
Фактическая функция
- Берет a, b и умножает их
- декоратор суммирует исходные числа плюс выход функции умножения
Код
def my_decorator(func): def addition(a,b): c = func(a, b) # use multiplication function return a b c # performs desired calculation return addition # modified function for desired calculation @my_decorator def actual_func(a,b): return a*b # does multiplication actual_func(2, 4) # return 14 i.e. 2 4 2*4
Ответ №2:
Пожалуйста, укажите свою ошибку в вопросе.
Ваше текущее состояние выглядит многообещающим, но есть небольшие ошибки:
- внутренняя функция (
addition
) должна вызыватьfunc
с правильными аргументами (a,b,c
) и возвращать свое возвращаемое значение actual_func
следует добавить три числа и принять эти три в качестве параметров. Остальноеc
не определено вactual_func
.
Полный код:
def my_decorator(func): def addition(a,b): c = a*b return func(a,b,c) return addition @my_decorator def actual_func(a,b,c): return a b c