天天看点

匿名函数、高阶函数、调试

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:跳过当前函数,执行下一步