funcs = (func1(), func2())
out = reduce(lambda f, g: lambda *args, **kwargs: g(f(*args, **kwargs)), funcs)

これは何をしてるのですか?意味が分かりません。