鉴于这两个片段:
def sex (code):
return {'m': 'masculino', 'f': 'femenino', '': 'ignorado'} [code]
Run Code Online (Sandbox Code Playgroud)
和
sex = lambda code: {'m': 'masculino', 'f': 'femenino', '': 'ignorado'} [code]
Run Code Online (Sandbox Code Playgroud)
实际差异是什么?他们有不同的行为吗?
最重要的是:一个人比另一个更受欢迎吗?
我问这个,因为我在这个论坛中的一个答案(python3 - 学习搜索,这个非常简单的例子不能正常工作),它提供了两种可能性,被另一个用户("修订版")截断,删除了lambda术语.修改的原因是最后一个选项(lambda表达式)比函数定义更糟糕.这让我想知道:
为什么lambda表达式比函数定义更糟?这些特别简单.
lambda和a之间没有功能差异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
Run Code Online (Sandbox Code Playgroud)
我会说,在一般意义上说任何一种写函数的方式都"更糟"是错误的.但是,在您的示例中,def版本更好.原因在于,一般来说,lambdas的目的是简洁地在表达式中编写简短的匿名函数.没有真正的意义name = lambda: ....如果您要立即给它命名,没有理由定义匿名函数.
lambdas的关键在于你可以做到someFuncRequiringCallback(lambda x: x+1),你不想给这个函数命名,或者除了这种情况之外还要用它来做任何事情.如果您确实想在多个上下文中使用函数,只需使用常规函数定义它即可def.
| 归档时间: |
|
| 查看次数: |
340 次 |
| 最近记录: |