<p>你说的是<a href="https://docs.python.org/3.5/tutorial/controlflow.html#lambda-expressions" rel="noreferrer">lambda functions</a>?就像</p>
<pre><code>lambda x: x**2 + 2*x - 5
</code></pre>
<p>这些东西其实很有用。Python支持一种称为<em>函数式编程</em>的编程风格,您可以将函数传递给其他函数来完成任务。示例:</p>
<pre><code>mult3 = filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9])
</code></pre>
<p>将<code>mult3</code>设置为<code>[3, 6, 9]</code>,即原始列表中3的倍数的元素。这比</p>
<pre><code>def filterfunc(x):
return x % 3 == 0
mult3 = filter(filterfunc, [1, 2, 3, 4, 5, 6, 7, 8, 9])
</code></pre>
<p>当然,在这种情况下,您可以做与列表理解相同的事情:</p>
<pre><code>mult3 = [x for x in [1, 2, 3, 4, 5, 6, 7, 8, 9] if x % 3 == 0]
</code></pre>
<p>(或者甚至是<code>range(3,10,3)</code>),但是还有许多其他更复杂的用例,在这些用例中,您不能使用列表理解,lambda函数可能是写出某些内容的最短方法。</p>
<ul>
<li><p>从另一个函数返回函数</p>
<pre><code>>>> def transform(n):
... return lambda x: x + n
...
>>> f = transform(3)
>>> f(4)
7
</code></pre>
<p>这通常用于创建函数包装器,如Python的decorators。</p></li>
<li><p>可数序列的元素与<code>reduce()</code>结合</p>
<pre><code>>>> reduce(lambda a, b: '{}, {}'.format(a, b), [1, 2, 3, 4, 5, 6, 7, 8, 9])
'1, 2, 3, 4, 5, 6, 7, 8, 9'
</code></pre></li>
<li><p>按备用键排序</p>
<pre><code>>>> sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x))
[5, 4, 6, 3, 7, 2, 8, 1, 9]
</code></pre></li>
</ul>
<p>我经常使用lambda函数。我花了一段时间去适应他们,但最终我明白了他们是语言中非常有价值的一部分。</p>