匿名函数lambda
lambda args:expression
f1 = lambda x,y : x+y
args:以逗号分隔的参数列表
expression:用到args中各参数的表达式
- lambda语句定义的代码必须是合法的表达式,不能出现多条件语句(可使用if的三元表达式)和其他非表达式语句,如for和while等
- lamda的首要用途是指定短小的回调函数
- lambda将返回一个函数而不是将函数赋值给某变量名
- 注意:
lambda是一个表达式而非语句
lambda是一个单个表达式,而不是一个代码块 - def语句创建的函数将赋值给某变量名,而lambda表达式则直接返回函数
- lambda也支持使用默认参数
-
Python函数式编程
函数式编程:
- 也称作泛函编程,是一种编程规范
- 它将电脑运算视为数学上的函数计算,并且避免状态以及可变数据
- 函数式编程语言最重要的基础是lambda演算,而且lambda演算的函数可以接受函数当作输入和输出
Python支持有限的函数式编程功能:
过滤器 filter(func,seq)
- filter()为已知的序列的每个元素调用给定的布尔函数
- 调用中,返回值为非零值的元素将被添加至一个列表中
映射器 map(func,seq1[,seq2…])
- map()将函数调用“映射”到每个序列的对应元素上并返回一个含有所有返回值的列表
折叠 reduce(func,seq[,init])
- 将二元函数作用域seq序列的元素,每次携带一对(先前的结果以及下一个序列元素),连续地将现有的结果和下一个值作用在获得的随后的结果上,最后减少我们的序列为一个单一的返回值;如果初始值init给定,第一个比较会是init和第一个序列元素而不是序列的头两个元素