return functools.reduce(lambda total_r...
не просто функцию, а некий объект замыкания. К скоупу утянутых с собой переменных можно как-то добраться руками (кажется, атрибут __closure__), и, конечно, к ним сохраняется доступ из возвращенной функции. Вот всё это хзяйство - не код. Надо хешировать обычные функции:
.....
А также производные,
полученные с помощью
import functools
def conjunction(*funcs):
def conjunct(*args, **kwargs):
return functools.reduce(lambda total_r
src.sort(key=lambda x: len(x), reverse=True) # no
src.sort(key=len, reverse=True) # yes
tree = {}
for w in src:
while w:
w = w[:-1]
if w in tree:
tree[w] += 1
break
else:
tree[w] = 1
for w in sorted(tree.keys()):
if w.endswith("_") and tree[w] > 1:
print(w)
conjunction
, есть, допустим, набор первичных функций - a(...), b(...) и c(...), ну запихните им в докстринг "a", "b", "c", а вconjunction
присваивайе докстрингу конкатенцию. И в отладке будет что почитать. Да и для нескольких разных фабрик придумаете.