2016-10-19 55 views
1

虽然挖成lambda我定义了下面这段代码:为什么使用LAMBDA发送功能作为参数给另一个函数

def f2(number, lambda_function): 
    return lambda_function(number) 

def f1(number): 
    return f2(number, lambda x: x*2) 

number = 2 
print f1(number) 

虽然我不同意这样的代码看起来很酷我不知道为什么就没有我只是把它放下采用更传统的方法,比如:

def f1(number): 
    return number*2 

number = 2 
print f1(number) 

据我所知,一些语言依赖的函数式编程更比Python。但是在Python中,如果我只是避免lambda和函数编程技巧,那么最终会得到更少的行和更易读的友好代码。如果不使用lambda,可以修改上面的代码来说明任务无法完成的情况? Python中lambda的用途是什么?你能向我展示lambda真正“闪耀”的例子吗?可能是使用lambda简化了代码的例子吗?

回答

3

lambda函数像普通函数一样工作,但用于只执行一次的情况。那么,为什么要创建消息体并定义函数呢?例如,排序元组的列表:

>>> my_list = [(1, 3) , (4, 8), (2, 3), (1, 6)] 
>>> my_list.sort(key=lambda x: (x[0], -x[1])) 
>>> my_list 
[(1, 6), (1, 3), (2, 3), (4, 8)] 

在这里,我在增加指数0的顺序,然后递减指数1的顺序排序my_list。但list.sort()作为函数接受key的值。除了定义该功能并在此处传递该功能之外,在其内部调用lambda更清晰。

因为这些可以写成表达式,所以它们在文档中被称为Lambda Expression,而不是Lambda函数

还可以阅读:Why are Python lambdas useful?

在你给的例子,我不认为使用lambda有任何有用的。

相关问题