Lambda表达式之Python

lambda表达式可以让你写出优美,简洁的代码.虽然没有接触过Lisp,但是<黑客与画家>列举的事例足以证明函数式编程的强大之处,也更加证明了人月就是一个神话.
Python中的lambda表达式用法之一:
定义一个函数,函数的返回值是一个lambda表达式,

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代码,可以看出简洁性弱爆了,显得相当不专业.

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));
	}
}
幸好java8引入了lambda表达式,可以减少很多冗长的代码,同时增加代码的可读性.
python当中提供了三个内置函数,可以与lambda表达式一起使用
filter, map, reduce
比如在django的QuerySet结果中只需要某一个字段对应的值,则可以使用一下代码

>>> result = map(lambda user: user.name, UserModel.objects.all())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值