一、匿名函数
匿名函数:没有名字的函数,在Python中用lambda定义
lambda 形参1, 形参2, 形参3: 表达式
lambda x, y: x + y
可以用一行代码完成简单的函数定义,可以当做实参快速传递到函数中去,lambda函数能接收任何数量的参数但只能返回一个表达式的值,其默认就是返回的,不用写return
一般情况下对匿名函数的使用有2种方式
通过lambda定义匿名函数,然后用一个变量指向这个匿名函数,然后通过变量名()调用这个匿名函数
# 定义了一个匿名函数,然后让变量add_2_nums指向它
add_2_nums = lambda x, y: x + y
# 调用add_2_nums指向的匿名函数
print("10+20=%d" % add_2_nums(10, 20))
直接在调用其它函数实参的位置通过lambda定义匿名函数,会将这个匿名函数的引用当做实参进行传递
def fun(a, b, opt):
print("a = %d" % a)
print("b = %d" % b)
print("result = %d" % opt(a, b)) # 此时opt指向了第7行定义的匿名函数,所以opt(a, b)就相当于调用匿名函数
fun(5, 2, lambda x, y: x * y) # 定义一个匿名函数,且将它的引用当做实参进行传递
二、递归函数
一个函数在函数体中又调用了自己,这样的函数叫递归函数
示例 实现计算阶乘 n! = 1 * 2 * 3 * … * n
def mult_nums(n):
if n > 1:
return n * mult_nums(n-1)
else:
return 1
ret = mult_nums(4) # 计算4的阶乘,结果为24
print(ret)