Python lambda vs Ruby lambda
在Ruby中,lambda可以用作匿名函数,它也是一个对象 但是Python呢?我知道Python lambda也可以用作匿名函数,但我想知道它们之间的其他区别是什么?Python lambda与函数 Python lambda是功能齐全的函数对象,它们只是缺少名称和文档(docstring),并且只能返回表达式(没有语句)。因此,命名函数和lambda都有闭包,可以像对象一样传递 许多Python程序员宁愿不使用Python lambda,因为它们有缺点,除了能够在函数调用中直接提供它们作为参数,而不是在不同的行上创建命名函数之外,没有其他好处 对于Python,除了lamba创建中的约束之外,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,因为它们有缺点,除了能够在函数调用中直接提供它们作为参
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不是一个讨论受观点影响的答案的论坛。