Я изучаю программирование на python и у меня в теме декоратора есть проблема в выполнении задания. Буду благодарен за помощь объяснении решения.
Задание следующее: "Напишите декоратор trace, который будет выводить информацию о вызове функции, только если переданные аргументы удовлетворяют предикату"
Ожидаемый результат:
@trace_if(lambda x, y, **kwargs: kwargs.get("integral"))
def div(x, y, integral=False):
return x // y if integral else x / y
>>> div(4, 2)
2
>>> div(4, 2, integral=True)
div (4, 2) {'integral': True}
2
Я написал следующий код, но он не работает так как показано выше:
def trace_if(dec_arg):
def my_decorator(func):
def info_f(*args, **kwargs):
if dec_arg == True:
print(func.__name__, args, kwargs)
return func(*args, **kwargs)
return info_f
return my_decorator