本章内容主要讲解了lambda表达式,在实际应用中还是经常被灵活使用到的,它通常只有一行代码,可以更简洁实现代码编写。
一、概念
lambda表达式,又称为匿名函数。该函数是一种小型的,没有具名称的内联函数,它可以具有任意数量的参数,但只能有一个表达式。
通常在需要函数作为参数传递的情况下使用,例如在 map()、filter()、reduce() 等函数中。(整篇以pthon3为例)
二、语法
lambda arguments: expression
- arguments 冒号左侧表示参数,多个参数时,使用逗号隔开。
- expression 冒号右侧表示返回值,可将表达式的结果当作返回值。
Lambda 函数可用于任何需要函数对象的地方。在语法上,匿名函数只能是单个表达式。在语义上,它只是常规函数定义的语法糖。与嵌套函数定义一样,lambda 函数可以引用包含作用域中的变量。(详细可参考官网讲解4. 更多控制流工具 — Python 3.12.4 文档)
三、实现
1、lambda与普通函数方法实现对比
def f(x):
return x**2
print f(4)
# Python中使用lambda的话,写成这样:
g = lambda x : x**2
print g(4)
优点:
- 使用Python写一些执行脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
- 对于一些抽象的,不会别的地方再复用的函数,有时候给函数起个名字也是个难题,使用lambda不需要考虑命名的问题。
- 使用lambda在某些时候让代码更容易理解。
缺点:
- lambda和普通的函数相比,就是省去了函数名称而已,而且又不能共享在别的地方调用。
- lambda在Python这种动态的语言中确实没有起到什么惊天动地的作用,因为有很多别的方法能够代替lambda。
在实际的应用中,lambda表达式常常作为map()、filter()等函数的参数实现参数传递,具体可参考以下例子实现。(更多的示例可参考Python lambda(匿名函数) | 菜鸟教程)
# 例子1:
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
print(filter(lambda x: x % 3 == 0, foo))
输出结果:
[18, 9, 24, 12, 27]
# 例子2:
print(map(lambda x: x * 2 + 10, foo))
输出结果:
[14, 46, 28, 54, 44, 58, 26, 34, 64]
# 例子3:
print(reduce(lambda x, y: x + y, foo))
输出结果:
139
总结
以上是今天学习的lambda表达式的全部内容,它的语法其实不难,但作为其他函数的参数,是需要我们在不同实际场景正确理解和灵活掌握的,它可以简化代码编写,对代码也是易理解维护,但对于多处调用实现的函数功能,还是需要普通代码的编写实现。
(以上是小白学习中的总结,有任何不同理解或有问题的地方,欢迎大家指出)