我有一系列操作需要依次执行,每个操作都依赖于前一个操作的输出结果。
就像这样:
out1 = function1(initial_input)
out2 = function2(out1)
out3 = function3(out2)
out4 = function4(out3)
这个函数链重复了大约十次,代码看起来有点丑陋。
有没有更好的写法呢?能否使用一些函数式编程技巧来处理它?在调用和执行这个函数链时,有没有更好的方法?
我有一系列操作需要依次执行,每个操作都依赖于前一个操作的输出结果。
就像这样:
out1 = function1(initial_input)
out2 = function2(out1)
out3 = function3(out2)
out4 = function4(out3)
这个函数链重复了大约十次,代码看起来有点丑陋。
有没有更好的写法呢?能否使用一些函数式编程技巧来处理它?在调用和执行这个函数链时,有没有更好的方法?
使用循环:
out = initial_input
for func in [function1, function2, function3, function4]:
out = func(out)
[]
,这个也可以:for fn in f1, f2, f3:
- thebjornIn [1]: compose = lambda f, g: lambda arg: f(g(arg))
In [2]: from functools import reduce
In [3]: funcs = [lambda x:x+1, lambda x:x*2]
In [4]: f = reduce(compose, funcs)
In [5]: f(1)
Out[5]: 3
In [6]: f(3)
Out[6]: 7
out4 = function4(function3(function2(function1(initial_input))))