- 定义:在函数内部调用函数本身的函数称为递归函数
- 组成:
- 函数内部调用自己
- 终止条件(停止调用自己)
- 核心算法
- 特点:
- 代码简介
- 可读性差
- 瞬间占用内存较大,终止条件一旦出错立即崩溃
- 能不使用就不使用,在不得不使用的时候再使用(目录遍历)
- 练习:
- 求n的阶乘
- 求斐波那契数列的第n项
- 前两项都是1,后面的项都等于前两项的和
- 示例:1, 1, 2, 3, 5, 8, 13, …
匿名函数
- 函数可以向变量一样赋值
def test():
print('for test')
# 获取函数的名字
print(test.__name__)
# 函数可以像普通变量一样进行赋值
a = test
print(a.__name__)
# 同样可以调用
a()
- 函数可以作为另一个函数的参数
# 函数作为另一函数的参数
def demo(func):
func()
demo(test)
匿名函数
- 将函数作为参数传递时,若该函数只使用一次,没有必要定义函数然后传参,可以使用匿名函数进行解决
- 语法格式:lambda 参数列表: 表达式
- 说明:
- 参数可以有多个,多个参数之间使用逗号隔开
- 表达式就是返回值,不需要使用return关键字
- 示例:
def calc(a, b, suanfa):
return suanfa(a, b)
def add(x, y):
return x + y
print(calc(2 , 5,add))#参数值加算法名字
# 通过匿名函数更容易实现
print(calc(7,5,lambda x,y:x+y))
print(calc(3,1,lambda x,y:x*y))
lt = [
{'name': 'ergou', 'age': 18, 'weight': 60},
{'name': 'dagou', 'age': 19, 'weight': 65},
{'name': 'erhua', 'age': 16, 'weight': 50},
{'name': 'dahua', 'age': 17, 'weight': 55},
]
def kk(d):
return d['age']
# lt.sort(key=kk)
lt.sort(key=lambda d:d['age'])
lt.sort(key=lambda d:d['weight'])
for i in lt:
print(i)