Не могу разобраться в задаче на декоратор
Есть задача:
Напишите декоратор flip, который делает так, что задекорированная функция принимает все свои неименованные аргументы в порядке, обратном тому, в котором их передали (для аргументов с именем не вполне правильно учитывать порядок, в котором они были переданы)
@flip
def div(x, y, show=False):
res = x / y
if show:
print(res)
return res
div(2, 4, show=True)
#Ответ
>>> 2.0
Как я понял декоратор "flip" меняет "x/y" на "y/x". Вот, что я придумал:
def flip(func):
def wrapper(*args,**kwargs):
x,y = args
for key,value in kwargs.items():
return func(y,x,key=value)
return wrapper
Но это код не работает, потому что в функцию "flip" мы принимаем другую функцию "func" и я не понимаю как вытащить из принимаемой функции "func" значения "2, 4, show=True".
Ответы (1 шт):
Автор решения: day383
→ Ссылка
def flip(func):
def wrapper(*args, **kwargs):
return func(*args[::-1], **kwargs)
return wrapper