简单来说, lambda 表达式通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。
- lambda只是一个表达式,函数体比def简单很多
- lambda的主体是一个表达式,而不是一个代码块。仅仅能表达有限的逻辑
- lambda表达式是起到一个函数速写的作用,允许在代码内嵌入一个函数的定义
lambda格式:冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值
单变量函数表达式实例:
多变量函数表达式实例:
通常lambda定义匿名函数,主要结合运用场景进行使用:
- 函数式编程:以sorted、reduce、map、filter函数作为支持,lambda函数就可以应用在函数式编程中
- 作为闭包,作为定义在函数的内部的函数使用
1.1、map(func,seqs)与lambda
1.2、sorted与lambda将list的数按照lambda定义的的key值排序
1.3、filter(func,seqs)与lambda
1.4、reduce(function,seqs)与lambda
2、作为闭包,作为定义在函数的内部的函数使用
- 可以简单粗暴地理解为闭包就是一个定义在函数内部的函数,学雅思要多久闭包使得变量即使脱离了该函数的作用域范围也依然能被访问到。
这里的lambda函数就是一个闭包,在全局作用域范围中,add_f(4)(7)正常执行且返回值为11,之所以返回11是因为在add_f局部作用域中,变量y的值在闭包的作用使得它在全局的作用域也可以被访问到。