在之前面学习了定义函数、调用函数以及设置函数的参数。现在将会补充函数中两个常见的知识点,一个是匿名函数,另一个是递归函数。
在前面,我们使用def 函数名(参数):的结构来定义一个函数。如果,我们把def定义的函数看作“有名字函数”。那么还有一类函数,无需定义函数名,即匿名函数。
匿名函数(Anonymous Function)这段代码创建了一个匿名函数,并赋值给了变量square。然后通过变量名square调用函数,输出了结果。
# 使用lambda创建匿名函数,并赋值给变量square
square = lambda x:x*x
# 通过变量名square,传入参数9,调用该匿名函数,并输出
print(square(9))
lambda:lambda是一个关键字,用来创建匿名函数。
空格:关键字lambda和后面的式子间要有一个空格,这是创建匿名函数的固定格式。
形参:冒号前面的x是匿名函数的参数,也就是形参,用于接收实参传递来的数据。
冒号:一个冒号是匿名函数的固定格式。冒号前面是形参,冒号后面是进行计算的表达式。
表达式:冒号后面的表达式就是函数的返回值。表达式的结果将返回到调用函数的地方。所以,匿名函数可以看作return型函数的简便写法。
变量:将匿名函数,赋给一个变量(这里是square)。后续可以通过该变量来调用匿名函数。
调用函数:只要将匿名函数赋值给了变量,就需要通过对应的变量名来调用函数。本例中,通过变量square来调用该匿名函数,在括号()中传入了实参9。
多个形参
匿名函数也可以设置多个形参,形参间以逗号隔开。
立方体体积
定义一个“匿名函数”,用于返回立方体的体积,并将其赋值给变量power。
然后通过该变量名,传入参数10, 8, 6,调用函数,并输出计算的结果。
体积公式为:长*宽*高
# TODO 定义匿名函数,设置三个形参,用于返回立方体的体积,并赋值给变量power
power = lambda a,b,c:a*b*c
# TODO 通过变量名,依次传入参数10,8,6,调用该匿名函数,并输出
print(power(10,8,6))
匿名函数的局限性
匿名函数使用起来比较方便,但是它也有局限性。一般只能用来改写包含了return的简单函数。示例中,是匿名函数和普通函数的等价写法。
递归(Recursive),将函数在定义中调用函数自身的过程称为递归。
示例:这段函数定义一个求和函数sum,并通过递归的方式求得了5以内的数字的累加和。
# 定义名为sum()函数,传入参数n
def sum(n):
if n == 1:
return 1
return n + sum(n-1)
# 调用sum()函数,传入参数5,并输出
print(sum(5))
网友评论