gpt4 book ai didi

python - 函数定义与 Lambda 表达式

转载 作者:太空宇宙 更新时间:2023-11-04 06:50:48 27 4
gpt4 key购买 nike

鉴于这两个片段:

def sex (code):
return {'m': 'masculino', 'f': 'femenino', '': 'ignorado'} [code]

sex = lambda code: {'m': 'masculino', 'f': 'femenino', '': 'ignorado'} [code]

实际区别是什么?他们有不同的行为吗?

最重要的是:一个比另一个更受欢迎吗?

我问这个问题,因为我在这个论坛 ( python3 - learning about searching, this very simple example does not work right ) 中的一个答案提供了两种可能性,但被另一个用户截断了(“修改过”),删除了 lambda 项。修改的原因是最后一个选项(lambda 表达式)比函数定义更差。这让我想知道:

为什么 lambda 表达式比函数定义更糟糕?尤其是像这样的简单表达式。

最佳答案

返回相同内容的 lambda 和 def 之间没有功能差异。它们完全相同并且具有相同的字节码。

>>> 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

我要说的是,从一般意义上讲,任何一种编写函数的方式都“更差”是错误的。但是,在您的示例中,def 版本更好。原因是一般来说,lambda 的目的是在表达式中简洁地编写简短的匿名函数。执行 name = lambda: ... 没有实际意义。如果您打算立即为其命名,则没有理由定义匿名函数。

lambda 的要点是您可以执行 someFuncRequiringCallback(lambda x: x+1),您不想给函数命名或将它用于除这种情况之外的任何事情。如果您确实想在多个上下文中使用一个函数,只需使用常规 def 定义它即可。

关于python - 函数定义与 Lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13853386/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com