2.7 特殊的函式——遞迴呼叫,和匿名函式
阿新 • • 發佈:2018-12-30
上一章的答案:一張圖片搞定。
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,再進行排序。