匿名函数;;匿名函数是指不使用def语句这样标准的形式定义一个函数,也就是说函数没有具体的名称。
使用lambda函数创建匿名函数可以省去定义函数的过程,同时可以避免函数的重复使用。
在lambda函数中,冒号前是函数参数,若有多个参数,需使用逗号分隔;冒号后是返回值。
使用lambda函数创建的函数没有具体的名称。创建函数的示例如下。;用lambda函数创建函数时,应该注意以下4点。
(1)lambda函数创建的是单行函数,如果需要创建复杂的函数,应使用def关键字。
(2)lambda函数可以包含多个参数。
(3)lambda函数有且只有一个返回值。
(4)lambda函数中的表达式不能含有命令,且仅限一个表达式。这是为了避免匿名函数的滥用,过于复杂的匿名函数反而不易于解读。
;Python允许将lambda函数作为对象赋值给变量,然后使用变量名进行调用。
例如,在Python的数学库中只有以自然数e和10为底的对数函数,而使用lambda函数即可创建以指定数为底的对数函数,示例代码如下。;;map函数是Python内置的高阶函数,它的基本格式为map(func,list)。
其中,func表示一个函数,list表示一个序列对象。在执行的时候,map函数把函数func按照从左到右的顺序依次作用在list的每个元素上,得到一个新的序列对象并返回。示例代码如下。;fib函数是一个递归函数,最典型的递归示例之一是斐波那契数列。
根据斐波那契数列的定义,可以直接写出斐波那契数列递归函数。fib函数示例代码如下。;在上述代码中,“fib(n1)+fib(n2)”是调用了fib函数自身而实现递归的。
为了明确递归的过程,介绍其计算过程如下(令n=3)。
(1)n=3,调用fib(3),判断后需计算fib(31)+fib(32)。
(2)先看fib(31),即fib(2),返回结果为2。
(3)再看fib(32),即fib(1),返回结果也为2。
(4)最后计算第(1)步,结果为fib(n1)+fib(n2)=2+2=4,将结果返回。
从而得到fib(3)的结果为4。从计算过程可以看出,每个递归的步骤都是向着最初的已知条件方向得到结果,然后一层层向上反馈计算结果。;filter函数是Python内置的另一个常用的高阶函数。
filter函数接收一个函数func和一个序列对象list,函数func的作用是对list中的每个元素进行判断,通过返回True或False来过滤掉不符合条件的元素,将符合条件的元素组成新的序列对象。filter函数示例代码如下。;;【任务5-3】多种方式实现数据累加