高阶函数与函数的柯里化
高阶函数
- 数学概念:y = f(g(x))
- 高阶函数满足条件:
- 输出一个函数
- 接收一个或多个函数作为参数
- 示例
#调用后返回值为函数 def foo1(): def add(x,y): return x+y return add #调用时接受一个或者多个函数 def foo2(add): y = add(4,5) return y
自定义sort函数
在不使用内建函数的情况下,自行实现一个sort函数
def sort(iterable,*,key = None,reverse = False):123 newlist = [] for x in iterable: for i,y in enumerate(newlist) : if x < y: newlist.insert(i,x) break else: newlist.append(x) return newlist
内建高阶函数
- sorted(iterable,*,key = None,reverse = Flase) #返回一个新列表
- iterable:可迭代对象
- key:参数函数,指定排序规则函数
- reverse:是否翻转(降序升序)
- filter(function,iterable) #iterable返回个迭代器,过滤等效为False的值(当function为None时过滤等效为False的值。如果不为None需要定过滤规则)
- function:是个函数参数,返回值应该是bool类型,或其返回值等效为布尔值。默认值是None则可迭代对象的每一个元素自身等效布尔值
- iterable可迭代对象
- map(function,*,iterable) map object返回可迭代对象。#对多个可迭代对象的元素,按照指定的函数进行映射。(带入函数,返回函数计算出来的返回值)
函数的柯里化
- 函数的柯里化指的时将原来接受两个参数的函数,变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数为参数的函数
- z=f(x,y)转换成z=f(x)(y)
- 示例
def add(x,y): return x+y #柯里化后 def add(x): def add1(y): return x+y return add1
#通过嵌套函数就可以吧函数转换成柯里化函数