一、高阶函数
1.map /reduce
map()函数接收两个参数,一个是函数,一个是iterable,将传入的每个函数依次作用到序列的每个元素,并把结果作为新的iterator返回。
reduce作用于一个序列,接受两个参数,把结果继续和序列的下一个元素做累积计算。
2.filter()函数用于过滤序列 把传入的函数依次作用于每个元素,根据返回值为true还是false决定保留还是丢弃元素
3.sorted() 可以对list 进行排序
可以接受一个key函数来实现自定义的排序
二、返回函数
闭包
返回函数不能引用任何循环变量,或者后续会发生变化的变量
解决:再创建一个函数,用该函数的参数绑定循环变量当前的值,无论该循环变量后续如何更改,已经绑定到函数参数的值不变:
nonlocal
三、匿名函数
lambda x: x*x
匿名函数也是一个变量,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数
同样,也可以把匿名函数作为返回值返回
四。装饰器:在代码运行期间动态增加功能的方式
通过变量调用函数
函数对象有个__name__属性,可以拿到函数的名字
decorator是一个返回函数的高阶函数,通过接收一个函数作为参数,并返回一个函数,借助python的@语法,把decorator置于函数的定义处