输出结果
def increment(n):
return lambda x: x + n;
g = increment(10)
f = increment(20)
print g(1)
print f(1)
11
21
lambda本身是一个function,也就是说function也可以是一种变量,在java8之前,为了实现类似功能,我们必须首先定义一个接口,然后添加一个方法,通过实现接口来生成不同的功能.转化成java代码,可以看出简洁性弱爆了,显得相当不专业.
幸好java8引入了lambda表达式,可以减少很多冗长的代码,同时增加代码的可读性. python当中提供了三个内置函数,可以与lambda表达式一起使用
public class LambdaTest {
public interface Incrementor {
public int increment(int number);
}
public static void main(String[] args) {
Incrementor f = new Incrementor() {
@Override
public int increment(int number) {
return 10 + number;
}
};
Incrementor g = new Incrementor() {
@Override
public int increment(int number) {
return 20 + number;
}
};
System.out.println(g.increment(1));
System.out.println(f.increment(1));
}
}
filter, map, reduce
比如在django的QuerySet结果中只需要某一个字段对应的值,则可以使用一下代码
>>> result = map(lambda user: user.name, UserModel.objects.all())