2.7 特殊的函数——递归调用,和匿名函数

上一章的答案:一张图片搞定。

1,递归函数:自身调用自身的函数。【高中数学喜欢玩这个】

例如求n的阶乘。已知:1的阶乘是1,其他数的阶乘都是在1的基础开始的。

2,匿名函数:懒得取名字的函数。

格式:lambda 参数一个或者多个:表达式 

例子计算a+b的结果 : sum =lambda a,b : a+b 

调用方法:sum(10,20) 。#计算10+20

Lambda函数能接收任何数量的参数但只能返回一个表达式的值

匿名函数不能直接调用print,因为lambda需要一个表达式

函数作为参数传递

  1. 自己定义函数
    >>> 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
    
  2. 作为内置函数的参数

想一想,下面的数据如何指定按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,再进行排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值