天天看點

匿名函數、高階函數、調試

1.匿名函數就是匿名的小型函數,主要作用于函數調用中的參數

1)一個參數

def test_1(i):
  return i+1
r = test_1(2)
print(r)結果為3
#使用匿名函數通過lambda關鍵字實作
l = (lambda x:x+1)
print(l(2))結果為3      

2)匿名函數也可以處理多個參數的函數

r = lambda x,y :x+y
print(1,2)結果為3      

3)主要用于高階函數調用

def test_2(a,func):#傳入匿名函數lambda
  print('---->',a)
  r = func(a)#定義變量r接受函數,并傳入參數a
  print('--->',r)
test_2(2,lambda x: x**2)
結果為---->2
         --->4      

2.高階函數:就是接受函數作為參數的函數,需要通過list()來輸出

1)filter函數用于過濾資訊

list1 = [('張三',18),('李四',19),('王五',20)]
f = flter(lambda x: x[1]>19,list1)#過濾掉年齡小于19的人
print(list(l))#需要通過list來輸出,結果為('王五',20)      

2)map()函數,用于匿名函數指定内容,進行功能擴充

list1 = [('張三',18),('李四',19),('王五',20)]
m =map(lambda x: x[1]+1,list1)#對清單所有的内容進行加1操作
print(list(m))#需要通過list來輸出
#結果為('張三',19),('李四',20),('王五',21)      

3)reduce()函數,用于函數的運算

先導入from functools import reduce

from functools import reduce
list = [1,2,3,4,5]
#((((1+2)+3)+4)+5),一層層地進行,先進性(x+y)後面再逐漸累加
r = reduce(lambda x,y: x+y,list)
#結果為15      

3.調試:用于程式設計中的編譯錯誤,在代碼的左邊點選斷點,可以根據需求斷很多點

1)step over:單步調試,遇到函數直接執行跳過,進入下一個函數

2)step into:一步步執行

3)step into my code :不執行源碼的子函數,隻執行自己手寫的函數

4)step out:跳過目前函數,執行下一步