擅长:python、mysql、java
<p>lambda和返回相同内容的<code>def</code>之间没有函数上的区别。它们完全相同,具有相同的字节码。在</p>
<pre><code>>>> def sex (code):
... return {'m': 'masculino', 'f': 'femenino', '': 'ignorado'} [code]
>>> sex2 = lambda code: {'m': 'masculino', 'f': 'femenino', '': 'ignorado'} [code]
>>> sex.__code__.co_code == sex2.__code__.co_code
True
</code></pre>
<p>我要说,从一般意义上说,任何一种编写函数的方式都是“糟糕”的,这是错误的。但是,在您的示例中,<code>def</code>版本更好。原因是,一般来说lambdas的目的是在表达式中简洁地编写简短的匿名函数。做<code>name = lambda: ...</code>没有实际意义。如果你要立即给一个匿名函数取个名字,就没有理由定义它。在</p>
<p>lambdas的重点是您可以做<code>someFuncRequiringCallback(lambda x: x+1)</code>,在这种情况下,您不想给函数起一个名字,也不想将它用于除此之外的任何事情。如果您想跨多个上下文使用一个函数,只需用一个正则的<code>def</code>来定义它。在</p>