高阶函数
First Class Object
- 函数在Python中是一等公民
- 函数也是对象,可调用的对象
- 函数也是对象,可调用的对象
高阶函数
- 数学概念 y=g(f(x))
- 在数学和计算机学科中,高阶函数应当是至少满足下面一个条件的函数
- 接受一个或多个函数作为参数
- 输出一个函数
栈里面存放的是,函数的变量,压栈过程是有序的,堆里面存放的是调用函数的对象的变量,是无序的
内键高阶函数【常用的】
排序:sorted(iterable[, key][, reverse])
- 返回一个新的列表,对一个可迭代对象的所有元素排序,排序规则为key定义的函数,reverse表示是 否排序翻转
过滤:filter(function, iterable) --> filter object
- 过滤可迭代对象的元素,返回一个迭代器
- function一个具有一个参数的函数,返回bool
- 例如,过滤出数列中能被3整除的数字
- list(filter(lambda x: x%3==0, [1,9,55,150,-3,78,28,123]))
映射:map(func, *iterables) --> map object
- 对多个可迭代对象的元素按照指定的函数进行映射,返回一个迭代器
- list(map(lambda x:2*x+1, range(5)))
- dict(map(lambda x: (x%5,x) , range(500))
柯里化
-
指的是将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第 二个参数为参数的函数
-
z = f(x, y) 转换成 z = f(x)(y)的形式
举例
将加法函数柯里化
def add(x, y): return x + y
柯里化后
def add(x): def _add(y): return x + y return _add print(add(5)(7)) #12
通过嵌套函数就可以把函数转换成柯里化函数