首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python lambda与Ruby lambda

Python lambda与Ruby lambda
EN

Stack Overflow用户
提问于 2015-10-27 01:57:34
回答 1查看 941关注 0票数 2

在Ruby中,lambda可以用作匿名函数,它也是一个对象。

但是Python呢?我知道Python也可以用作匿名函数,但是我想知道它们之间的其他区别是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-27 02:51:14

Python lambdas与函数

Python是功能齐全的函数对象,它们只是缺少名称和文档(Docstring),只能返回表达式(没有语句)。因此,命名函数和lambda都有闭包,可以像对象一样传递。

许多Python程序员不喜欢使用Python,因为它们有缺点,除了能够在函数调用中直接将它们作为参数提供之外,没有别的选择,而不是在另一行上创建命名函数。

对于Python,除了lamba创建中的约束之外,由lambda创建的函数与由def语句创建的函数没有区别。两者都是同一类型的对象:

代码语言:javascript
复制
>>> def foo(): return None
>>> bar = lambda: None
>>> import dis
>>> dis.dis(foo)
  1           0 LOAD_CONST               0 (None)
              3 RETURN_VALUE        
>>> dis.dis(bar)
  1           0 LOAD_CONST               0 (None)
              3 RETURN_VALUE     

用于函数编程的Ruby lambdas

据我所知,Ruby是通过传递函数来进行函数编程的最佳实践方法,因为它们提供闭包--并且它们与应该叫方法一起使用.call方法。Ruby可以包含复杂/多行表达式。

结论

相比之下,两者都是功能齐全的,提供词法范围(闭包)、匿名和缺乏文档。

相反,Python返回一个表达式,而Ruby可以包含多行。Python将被直接调用,可能会在parens、()中传递参数,而Ruby的最佳实践是使用.call方法。

基于每个域的权衡和公认的最佳实践,人们会期望那些使用Ruby编程的人更喜欢lambda,尤其是函数编程,而那些使用Python的人更喜欢命名函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33358717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档