5.4 lambda表达式
- lambda表达式常声明匿名函数,
- 即没有函数名字的临时使用的小函数,
- 临时要一个类似于函数的功能但又不想定义函数的场合。
- sorted()和列表方法sort()的key参数,
- 内置函数map()和 filter()的第一个参数
- lambda表达式只可包含一个表达式,不允许包含其他复杂的语句,
- 但表达式中可以调用其他函数,
- 该表达式的计算结果相当于函数的返回值。
- 用 lambda表达式时,注意变量作用域可能会带来的问题。
- 下面的代码中变量x是在外部作用域中定义的,对 lambda表达式而言不是局部变量,从而错误。
- lambda表达式相当于只有一条 return的函数
- 调用时真正的返回值取决于全局变量i当前值。
- lambda表达式很方便定义一些小函数
- 如果仅要一简单运算,尽量用标准库 operator中提供的函数
- 避免自己定义lambda表达式,
- operator中的函数执行效率更高