Is there a function in Python that would do this:
val = f3(f2(f1(arg)))
by typing this (for example):
val = chainCalling(arg,f3,f2,f1)
I just figured, since python is (arguably) a functional language the function I’m looking for will make syntax brighter
Advertisement
Answer
Use the reduce()
function to chain calls:
from functools import reduce val = reduce(lambda r, f: f(r), (f1, f2, f3), arg)
I used the forward-compatible functools.reduce()
function; in Python 3 reduce()
is no longer in the built-in namespace.
This can also be made a separate function, of course:
from functools import reduce def chain(*funcs): def chained_call(arg): return reduce(lambda r, f: f(r), funcs, arg) return chained_call