在Ruby中,lambda可以用作匿名函数,它也是一个对象。
但是Python呢?我知道Python也可以用作匿名函数,但是我想知道它们之间的其他区别是什么?
发布于 2015-10-27 02:51:14
Python lambdas与函数
Python是功能齐全的函数对象,它们只是缺少名称和文档(Docstring),只能返回表达式(没有语句)。因此,命名函数和lambda都有闭包,可以像对象一样传递。
许多Python程序员不喜欢使用Python,因为它们有缺点,除了能够在函数调用中直接将它们作为参数提供之外,没有别的选择,而不是在另一行上创建命名函数。
对于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是通过传递函数来进行函数编程的最佳实践方法,因为它们提供闭包--并且它们与应该叫方法一起使用.call方法。Ruby可以包含复杂/多行表达式。
结论
相比之下,两者都是功能齐全的,提供词法范围(闭包)、匿名和缺乏文档。
相反,Python返回一个表达式,而Ruby可以包含多行。Python将被直接调用,可能会在parens、()中传递参数,而Ruby的最佳实践是使用.call方法。
基于每个域的权衡和公认的最佳实践,人们会期望那些使用Ruby编程的人更喜欢lambda,尤其是函数编程,而那些使用Python的人更喜欢命名函数。
https://stackoverflow.com/questions/33358717
复制相似问题