Декораторы функций
Впервые на данном ресурсе, хотел попросить у вас помощи. Не понял до конца тему с декораторами, а нужно выполнить задание. Вот собственно само задание: Вводятся два списка (каждый с новой строки) из слов, записанных через пробел. Имеется функция, которая преобразовывает эти две строки в два списка слов и возвращает эти списки. Определите декоратор для этой функции, который из этих двух списков формирует словарь, в котором ключами являются слова из первого списка, а значениями – соответствующие элементы из второго списка. Полученный словарь должен возвращаться при вызове декоратора. Примените декоратор к первой функции и вызовите ее. Результат (словарь) отобразите на экране. Буду признателен за помощь.
Ответы (2 шт):
как я понимаю вам нужно вот это:
# первоначальная функция
def initial_func(text1, text2):
return text1.split(), text2.split()
# декоратор
def decor(func):
def decor_meat(text1, text2):
data = func(text1, text2)
return dict(zip(*data))
return decor_meat
# подключаем декоратор
initial_func = decor(initial_func)
# использование декоратора
text1 = "key1 key2" #input('слова 1: ')
text2 = "value1 value2" #input('слова 2: ')
print(initial_func(text1, text2))
хотя исчерпывающий ответ уже был дан, добавлю вариант с использованием особого синтаксиса для декораторов:
def lists_to_dict(func):
def wrapper(*args):
items = func(*args)
return {k:v for k,v in zip(*items)}
return wrapper
@lists_to_dict
def f(t1,t2):
return [t1.split(),t2.split()]
print(f('a b c','1 2 3')) # {'a': '1', 'b': '2', 'c': '3'}