给出这两个片段:
def sex (code):
return {'m': 'masculino', 'f': 'femenino', '': 'ignorado'} [code]
以及
^{pr2}$实际的区别是什么?他们有不同的行为吗?在
最重要的是:一个比另一个好吗?在
我问这个问题,是因为我在这个论坛(python3 - learning about searching, this very simple example does not work right)中的一个答案提供了两种可能性,但被另一个用户截短(“修改”),删除了lambda术语。修改的原因是最后一个选项(lambda表达式)比函数定义更差。这让我想知道:
为什么lambda表达式比函数定义差?尤其是像这样简单的。在
除了BrenBarn's excellent answer中提供的信息外,您会发现许多Python程序员坚持总是使用},因此我将尝试解释为什么会这样。在
def
而不是{基本上可以从Zen of Python归结为以下一行:
这在Guido van Rossum's post about this issue中引用(Guido是Python的创建者):
lambda和返回相同内容的
def
之间没有函数上的区别。它们完全相同,具有相同的字节码。在我要说,从一般意义上说,任何一种编写函数的方式都是“糟糕”的,这是错误的。但是,在您的示例中,
def
版本更好。原因是,一般来说lambdas的目的是在表达式中简洁地编写简短的匿名函数。做name = lambda: ...
没有实际意义。如果你要立即给一个匿名函数取个名字,就没有理由定义它。在lambdas的重点是您可以做
someFuncRequiringCallback(lambda x: x+1)
,在这种情况下,您不想给函数起一个名字,也不想将它用于除此之外的任何事情。如果您想跨多个上下文使用一个函数,只需用一个正则的def
来定义它。在它们是一样的,检查反汇编的python字节码
甚至两个都有相同的类型
^{pr2}$相关问题 更多 >
编程相关推荐