上一章的答案:一张图片搞定。
1,递归函数:自身调用自身的函数。【高中数学喜欢玩这个】
例如求n的阶乘。已知:1的阶乘是1,其他数的阶乘都是在1的基础开始的。
2,匿名函数:懒得取名字的函数。
格式:lambda 参数一个或者多个:表达式
例子计算a+b的结果 : sum =lambda a,b : a+b
调用方法:sum(10,20) 。#计算10+20
Lambda函数能接收任何数量的参数但只能返回一个表达式的值
匿名函数不能直接调用print,因为lambda需要一个表达式
函数作为参数传递
- 自己定义函数
>>> def fun(a, b, opt): ... print "a =", a ... print "b =", b ... print "result =", opt(a, b) ... >>> fun(1, 2, lambda x,y:x+y) a = 1 b = 2 result = 3
- 作为内置函数的参数
想一想,下面的数据如何指定按age或name排序?【补充:需要了解一下sort函数的key使用方法3.7版本的官方翻译】
stus = [
{"name":"zhangsan", "age":18},
{"name":"lisi", "age":19},
{"name":"wangwu", "age":17}
]
按name排序:
>>> stus.sort(key = lambda x:x['name'])
>>> stus
[{'age': 19, 'name': 'lisi'}, {'age': 17, 'name': 'wangwu'}, {'age': 18, 'name': 'zhangsan'}]
按age排序:
>>> stus.sort(key = lambda x:x['age'])
>>> stus
[{'age': 17, 'name': 'wangwu'}, {'age': 18, 'name': 'zhangsan'}, {'age': 19, 'name': 'lisi'}]
简而言之:就是key对应函数会先被调用在列表或者字典中每一项执行一遍。上面的就相当于:首先用匿名函数,每个项都通过键来获取到值,然后给了key,再进行排序。