高阶函数与函数的柯里化

Posted fjjj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高阶函数与函数的柯里化相关的知识,希望对你有一定的参考价值。

高阶函数

  • 数学概念:y = f(g(x))
  • 高阶函数满足条件:
  1. 输出一个函数
  2. 接收一个或多个函数作为参数
  • 示例
#调用后返回值为函数

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)   #返回一个新列表
  1. iterable:可迭代对象
  2. key:参数函数,指定排序规则函数
  3. reverse:是否翻转(降序升序)
  • filter(function,iterable)  #iterable返回个迭代器,过滤等效为False的值(当function为None时过滤等效为False的值。如果不为None需要定过滤规则)
  1. function:是个函数参数,返回值应该是bool类型,或其返回值等效为布尔值。默认值是None则可迭代对象的每一个元素自身等效布尔值
  2. 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

#通过嵌套函数就可以吧函数转换成柯里化函数

 

以上是关于高阶函数与函数的柯里化的主要内容,如果未能解决你的问题,请参考以下文章

理解运用JS的闭包高阶函数柯里化

js高阶函数应用—函数柯里化和反柯里化

Go的魅力, 函数式(柯里化, 闭包, 高阶函数), Python@装饰器, 封装

前端学习(3233):高阶函数函数柯里化案例

前端学习(3232):高阶函数函数柯里化

从 ES6 高阶箭头函数理解函数柯里化