目录
- lambda函数让代码看起来更简洁直观
- lambda函数是一个函数对象
- 总结
1.lambda函数让代码看起来更简洁直观
lambda函数又称匿名函数,有些情况下我们不用显式定义而采用匿名函数会让代码看上去更加简洁。
In [48]: ls = [1,2,3]
In [49]: print(list(map(lambda x:x*x, ls)))
[1, 4, 9]
上面的例子中,通过lambda函数使得我们可以在不显式定义函数的情况下为map传递了一个函数,这使得代码看上去更为简洁直观。
关键词lambda定义了一个匿名函数,冒号前面的是匿名函数的参数(当需要多个参数时,参数之间用逗号,分割),冒号后的是一个表达式,lambda函数的返回内容就是表达式的值。
2.lambda函数是一个函数对象
lambda函数也是一个函数对象,所以也可以赋值给一个变量。
In [50]: lambda x,y:x*x+y*y
Out[50]: <function __main__.<lambda>>
In [51]: f1 = lambda x,y:x*x+y*y
In [52]: f1(1,2)
Out[52]: 5
lambda函数也作为返回值返回。
In [53]: def f():
...: x = 1
...: return lambda y:x*x+y*y # lambda函数引用了本地变量x,并且在函数f结束后保存了x的状态
...:
In [54]: m = f()
In [55]: m(2)
Out[55]: 5
In [56]: m.__closure__ # 证明m是一个闭包
Out[56]: (<cell at 0x00000132044E9E28: int object at 0x0000000051F260C0>,)
3.总结
- 有时我们需要在程序的某处使用一次某个函数,在这时使用lambda函数更加的方便也便于理解。
- python对lambda函数限制很多,其中很重要的一个就是只允许lambda函数包含一条表达式。这是为了避免滥用lambda函数——毕竟大量的抽象带来简洁的同时也带来了理解的困难。
网友评论