Вызывается возвращаемое значение декоратора — Python

#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