擅长:python、mysql、java
<p>您不需要返回生成器,而是需要返回一个函数,该函数接受一个参数并将其应用于每个链接函数。在</p>
<p>您的调用语法是:</p>
<pre><code>chained([f1, f2, f3])(0)
</code></pre>
<p>这意味着您希望<code>chained</code>返回可以用单个参数调用的内容。一个函数就可以了。在</p>
<p>有效的功能是:</p>
^{pr2}$
<p>这将使用上一次函数调用的结果调用每个函数。首先使用初始参数。在</p>
<p>但是,由于您没有将函数列表传递给这个只接受一个参数的函数,所以您需要以其他方式捕获它们。您可以在函数中定义函数,它可以捕获任何局部变量:</p>
<pre><code>def chained(functions):
def apply(param):
result = param
for f in functions:
result = f(result)
return result
return apply
</code></pre>
<p>定义函数<code>apply</code>本地捕获<code>functions</code>参数。然后我们返回函数,这样就可以调用它,本质上是<code>apply(0)</code>:</p>
<pre><code>>>> chained([f1, f2, f3])(0)
4
</code></pre>