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

版权声明:日常小迷糊 https://blog.csdn.net/m0_37701158/article/details/85332294

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

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

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

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

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

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

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

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

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

扫描二维码关注公众号,回复: 4709990 查看本文章

函数作为参数传递

  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,再进行排序。

猜你喜欢

转载自blog.csdn.net/m0_37701158/article/details/85332294
2.7
今日推荐