Lambda函数,即Lambda 表达式(lambda expression),是一个匿名函数(不存在函数名的函数),这篇文章主要介绍了Python lambda函数的基础知识,需要的朋友可以参考下
Lambda函数,即Lambda 表达式(lambda expression),是一个匿名函数(不存在函数名的函数),Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction)。
一、lambda函数也叫匿名函数,即,函数没有具体的名称。先来看一个最简单例子:
1
2
3
|
def f(x): return x * * 2 print f( 4 ) |
Python中使用lambda的话,写成这样
1
2
|
g = lambda x : x * * 2 print g( 4 ) |
二、lambda和普通的函数相比,就是省去了函数名称而已,同时这样的匿名函数,又不能共享在别的地方调用。
其实说的没错,lambda在Python这种动态的语言中确实没有起到什么惊天动地的作用,因为有很多别的方法能够代替lambda。
1. 使用Python写一些执行脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
2. 对于一些抽象的,不会别的地方再复用的函数,有时候给函数起个名字也是个难题,使用lambda不需要考虑命名的问题。
3. 使用lambda在某些时候让代码更容易理解。
lambda基础
lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。lambda语句构建的其实是一个函数对象,见证一下:
1
2
3
4
5
6
7
|
>>> foo = [ 2 , 18 , 9 , 22 , 17 , 24 , 8 , 12 , 27 ] >>> print filter ( lambda x: x % 3 = = 0 , foo) [ 18 , 9 , 24 , 12 , 27 ] >>> print map ( lambda x: x * 2 + 10 , foo) [ 14 , 46 , 28 , 54 , 44 , 58 , 26 , 34 , 64 ] >>> print reduce ( lambda x, y: x + y, foo) 139 |
在对象遍历处理方面,其实Python的for..in..if语法已经很强大,并且在易读上胜过了lambda。
defaultdict是字典类型,可以为defaultdict设置默认值,可以通过lambda设置默认值。
下面举几个例子:
1
2
3
4
5
6
7
|
from collections import * x = defaultdict( lambda : 0 ) / / 默认值是 0 print x[ 0 ] y = defaultdict( lambda :defaultdict( lambda : 0 )) / / 默认值是一个字典,字典的默认值是 0 print y[ 0 ] z = defaultdict( lambda :[ 0 , 0 , 0 ]) / / 默认值是一个列表,[ 0 , 0 , 0 ]. print z[ 0 ] |
输出结果:
1
2
3
|
0 defaultdict(<function < lambda > at0x7f097797af50>, {}) [ 0 , 0 , 0 ] |