建设网站企业邮箱,苏州网络公司小岚小艳,采购网站大全,裤子seo标题优化关键词目录 目标
匿名函数
多个形参
匿名函数的局限性
递归
语言例子
数学例子
递归的实现
递归代码
练习
总结 目标 在之前的博客中#xff0c;我们学习了定义函数、调用函数以及设置函数的参数。在今天#xff0c;我们会补充函数的两个常见的知识点#xff0c;一个是匿…目录 目标
匿名函数
多个形参
匿名函数的局限性
递归
语言例子
数学例子
递归的实现
递归代码
练习
总结 目标 在之前的博客中我们学习了定义函数、调用函数以及设置函数的参数。在今天我们会补充函数的两个常见的知识点一个是匿名函数另一个是递归函数。下面我们先来看看什么是匿名函数吧~
匿名函数 在前面我们使用def 函数名(参数): 的结构来定义一个函数。如果我们把def定义的函数看作“有名字函数”。那么还有一类函数无需定义函数名即匿名函数。 下面这段代码创建了一个匿名函数并赋值给了变量square。然后通过变量名square调用函数输出了结果。
# 使用lambda创建匿名函数并赋值给变量square
square lambda x:x*x
# 通过变量名square传入参数9调用该匿名函数并输出
print(square(9)) lambda
一个关键字lambda用来创建匿名函数。 空格
一个空格是创建匿名函数的固定格式。关键字lambda和后面的式子间要有一个空格。
形参
这个位置是匿名函数的参数也就是我们前面学习的形参用于接收实参传递来的数据。
冒号
一个冒号:是匿名函数的固定格式。冒号前面是形参冒号后面是进行计算的表达式。
表达式
一个计算形参的表达式紧跟在冒号后面。这个表达式就是函数的返回值。也就是说这个表达式的结果将返回到调用函数的地方。所以匿名函数可以看作return型函数的简便写法。 变量
将匿名函数的值赋给变量后续能通过该变量来调用匿名函数。 调用函数
只要将匿名函数赋值给了变量就需要通过对应的变量名来调用函数。示例中通过变量square来调用该匿名函数在括号()中传入了实参9。 多个形参 当然匿名函数还可以设置多个形参形参之间以逗号分隔。实例中冒号前设置了两个形参x和y在进行函数调用时还是采取位置形参的方式依次传递数据。 匿名函数的局限性 匿名函数使用起来比较方便但是它也有局限性。一般只能用来改写包含了return的简单函数。示例中是匿名函数和普通函数的等价写法。 递归 无论是前面的自定义函数还是匿名函数 都是先定义好然后函数外调用这个函数。其实函数在自己的内部还可以调用自己我们把这种函数称为递归函数。 下面我们通过几个例子来熟悉一下递归的概念。 定义通常我们在函数定义中调用函数自身的过程叫做递归。
隐喻两面镜子平行放置时镜子一层一层嵌套自己就是一种递归。 语言例子 其实有这样一个通俗的故事最能体现递归从前有座山山里有座庙庙里有个老和尚正在给小和尚讲故事呢故事是什么呢“从前有座山山里有座庙庙里有个老和尚正在给小和尚讲故事呢故事是什么呢…… 这里的“故事”嵌套的“故事”就是“故事”本身。除非讲故事的人自己停下来不讲了不然这个故事可以“无限”讲下去。 数学例子 现在我们假设sum(n)等于前n个正整数的和即sum(n)123……(n-1)n。如果直接计算sum(n)我们可能会从小到大一个数一个数接连相加1加2再加3……依次类推。 那么使用递归的思想又该如何解决呢 递归的核心思想就是大事化小即将原始问题拆解为等价的子问题。换句话说我们要计算sum(n)不妨先去计算更简单的sum(n-1)。但是由于n变成了n-1范围变小为了保证等价可以用sum(n-1)加上n。 同样的道理我们要计算sum(n-1)又可以先去计算sum(n-2)。以此类推一直计算到最简单的sum(1)1为止。 递归的实现 如图我们展示了计算sum(5)的递归过程。首先把sum(5)变成5sum(4)同理把sum(4)变成4sum(3)……以此类推一直到最简单的sum(1)。然后我们就能倒推结果。由于知道sum(1)就知道了sum(2)然后可知sum(3)、sum(4)和sum(5)。 递归代码 简单学习了递归的概念和函数原理后。下面我们将以计算5以内正整数的累加和为例来学习递归代码。 这段函数定义一个求和函数sum并通过递归的方式求得了5以内的数字的累加和。
# 定义名为sum()函数传入参数n
def sum(n):if n 1:return 1return n sum(n-1)# 调用sum()函数传入参数5并输出
print(sum(5)) 终止条件 终止条件是递归执行到满足某一条件后就返回具体的结果避免程序无限递归下去。因为要计算5以内的正整数之和而最小的正整数为1。所以示例中n的值为1时就会将1返回到调用函数处。 递归前进条件 递归的前进条件表示函数调用自身的代码通常是和原函数等价的表达式。通过前面的例子我们知道sum(n)等于n加上sum(n-1)。所以函数返回了nsum(n-1)。 练习
200以内求和
定义一个递归函数用于计算实现 200 以内的正整数之和。将函数名命名为 sum传入参数为 n。
参考代码
# 定义sum()函数传入参数n
def sum(n):if n1:return 1return nsum(n-1)
# 调用sum()函数传入200并输出
print(sum(200)) 总结