:)
Я хочу построить очень маленький функциональный конвейер в моем коде, чтобы сократить набор функций в одном словаре. Каждая функция выполняет одну вещь, но на разных клавишах, вот упрощенный пример:
У меня есть этот словарь
d = {"me": "gab", "you": "cita"}
и предположим, что глупая функция, как это:
def make_caps(dic, on=None):
if on is not None:
to_cap = dic.get(on, None)
if to_cap is not None:
dic[on] = to_cap.upper()
return dic
Я хотел бы, чтобы это работало:
def reduce_fns_on_dict(fns, dic):
from functools import reduce
return reduce(lambda d, f: f(d), fns, dic)
new_dic = reduce_fns_on_dict(fns=[make_caps(on="me"), make_caps(on="you")],
dic=d)
print(new_dic)
на консоли
{'me': 'GAB', 'you': 'CITA'}
Но когда я запускаю вышеупомянутое, я получаю:
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: make_caps() missing 1 required positional argument: 'dic'