擅长:python、mysql、java
<p>您可以使用<code>reduce</code>。。。在</p>
<p>这将获取一个函数列表,并依次将该值应用于每个函数。因此,将采用第一个函数,并返回一个值。然后,将采用第二个函数,并将其应用于新值。。。在</p>
<pre><code>fs = [f1, f2, f3]
print reduce( lambda val, f: f(val) , fs, 0 )
</code></pre>
<p>您需要的是一个函数<code>chained</code>,它返回另一个接受一个变量的函数。一个接受一个变量(比如<code>m</code>)的示例函数是<code>lambda m: m*2</code>。在</p>
<p>现在一个函数返回另一个接受一个值的函数?在</p>
^{pr2}$
<p>所以我们把以上两种想法结合起来。。。在</p>
<pre><code>def chained(fs):
return (lambda m: reduce( lambda val, f: f(val) , fs, m))
print chained(fs)(0)
</code></pre>
<p>在这里,<code>chained(fs)</code>获取函数列表<code>fs</code>,并返回函数<code>lambda m: reduce( lambda val, f: f(val) , fs, m)</code>。这是一个按顺序接受<code>m</code>和{<cd1>}所有函数的函数。在</p>
<p>所以,<code>chained(fs)(0)</code></p>
<p>变成<code>(lambda m: reduce( lambda val, f: f(val) , fs, m))(0)</code></p>
<p>变成<code>(reduce( lambda val, f: f(val) , fs, 0))</code></p>
<p>这正是第一个表达。。。在</p>