Python lambda vs Ruby lambda

Python lambda vs Ruby lambda,python,ruby,lambda,Python,Ruby,Lambda,在Ruby中,lambda可以用作匿名函数,它也是一个对象 但是Python呢?我知道Python lambda也可以用作匿名函数,但我想知道它们之间的其他区别是什么?Python lambda与函数 Python lambda是功能齐全的函数对象,它们只是缺少名称和文档(docstring),并且只能返回表达式(没有语句)。因此,命名函数和lambda都有闭包,可以像对象一样传递 许多Python程序员宁愿不使用Python lambda,因为它们有缺点,除了能够在函数调用中直接提供它们作为参

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

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

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

许多Python程序员宁愿不使用Python lambda,因为它们有缺点,除了能够在函数调用中直接提供它们作为参数,而不是在不同的行上创建命名函数之外,没有其他好处

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

>>> 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 Lambda是通过传递函数进行函数编程的最佳实践方式,因为它们提供闭包,并且使用
.call
方法。Ruby lambdas可以包含复杂/多行表达式

结论 相比之下,两者都功能齐全,提供词汇范围(闭包),匿名,并且缺乏文档

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


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

可能重复@metatoaster,我认为这是答案的一部分。我不想知道所有的差异,不仅仅是限制。无论如何,这个问题也太广泛了,stackoverflow不是一个讨论受观点影响的答案的论坛。