Декораторы функций

Впервые на данном ресурсе, хотел попросить у вас помощи. Не понял до конца тему с декораторами, а нужно выполнить задание. Вот собственно само задание: Вводятся два списка (каждый с новой строки) из слов, записанных через пробел. Имеется функция, которая преобразовывает эти две строки в два списка слов и возвращает эти списки. Определите декоратор для этой функции, который из этих двух списков формирует словарь, в котором ключами являются слова из первого списка, а значениями – соответствующие элементы из второго списка. Полученный словарь должен возвращаться при вызове декоратора. Примените декоратор к первой функции и вызовите ее. Результат (словарь) отобразите на экране. Буду признателен за помощь.


Ответы (2 шт):

Автор решения: Zhihar

как я понимаю вам нужно вот это:

# первоначальная функция
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))
→ Ссылка
Автор решения: SergFSM

хотя исчерпывающий ответ уже был дан, добавлю вариант с использованием особого синтаксиса для декораторов:

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'}
→ Ссылка