最后,我们一起来看一下,我们今天所讲的匿名函数lambda与Python的函数式编程特性之间的密切联系。
如果你对匿名函数lambda不了解或不清楚,请阅读以下文章:
Python核心技术——简洁的匿名函数(上)
Python核心技术——简洁的匿名函数(中)
Python函数式编程
我们知道函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。而函数式编程(请注意多了一个“式”字),是指代码中每一块都是不可变的,都由纯函数的形式组成。
注意:这里的纯函数,是指函数本身相互独立、互不影响,对于相同的输入,总会有相同的输出,没有任何副作用。
举个例子,若我想让一个列表中的元素值都变为原来的两倍,其代码如下:
我们这代码不是一个纯函数的形式,由于列表中元素的值被改变了,如果多次调用multiply_2()这个函数,那么每次执行得到的结果是不一样。要想让它变成成一个纯函数的形式,我们可以写成下面这种形式:重新创建一个新的列表并返回列表。
我们通过例子知道了什么是纯函数,那么函数式编程有什么优点和缺点呢?
函数式编程的优点和缺点是什么?
我们知道函数式编程的核心是纯函数,由于纯函数和不可变的特性,使程序更加健壮,易于调试和测试;
由于纯函数和不可变的特性导致限制多,难写。当然,Python不是一门函数式编程语言,不同于一些语言。不过,Python也提供了一些函数式编程的特性,值得我们了解和学习。
总结
我们学习了Python中的匿名函数lambda,知道了它的主要用途是减少代码的复杂度,使编程更加符合规范。
注意:lambda是一个表达式,并不是一个语句;它只能写成一行的表达形式,语法上并不支持多行。
匿名函数的使用场景:程序中需要使用一个函数完成一个简单的功能,并且该函数只调用一次。
下次我们聊一聊Python中提供的函数式编程的几个常见的函数,猜猜是谁?
#Python核心技术#