高阶函数与函数的柯里化

高阶函数

  • 数学概念: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

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

 

posted @ 2020-05-20 19:36  F_jj  阅读(190)  评论(0编辑  收藏  举报