高阶函数

Posted 炎之朱雀

tags:

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

--------------以下部分摘自马哥教育

函数的一般形式:

  y= f(x)

x成为自变量,y是x的函数 (域值)

高阶函数:

  y=f(g(x))

定义:

  接受一个或者多个函数作为参数

  返回一个函数

def counter(base):
    def inc(step=1):
        nonlocal base
        base += step
        return base

    return inc


foo = counter(5)
print(foo())
f1 = counter(5)
f2 = counter(5)
print(id(f1), id(f2), id(foo))

因为上面例子中,返回的是一个函数,即可以看成返回的是一个对象,所以在调用时,尽管参数值一样,但是,不同的调用产生了不同的对象,存放的地址是不一样的。

高阶函数的用途:

  函数作为返回值,往往会形成闭包;

  函数作为参数,应用很广泛。

排序问题举例:

lst = [2, 4, 6, 8, 4, 6, 3, 2, 4, 5]


def sort(lis, fn=lambda a, b: a < b):
    def compare(a, b):
        return a < b if asc else a > b

    newlst = []
    for x in lst:
        for i, y in enumerate(newlst):

            if fn(x, y):
                newlst.insert(i, x)
                break
        else:
            newlst.append(x)

    return newlst


print(sort(lst))
print(sort(lst, lambda x, y: x < y))
print(sorted(lst, reverse=True))  # sorted 排序函数
print(list(map(lambda x: (x, x + 1), lst)))  # map 映射函数
print(list(filter(lambda x: x > 3, lst)))  # filter 过滤函数

上面例子中我们把逻辑抽象成一个函数,然后有外部作为参数传入,大大增加编程的灵活性。

 

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

Python高阶函数

浅谈JS高阶函数

Python3 高阶函数

python之高阶函数

python中的高阶函数

高阶函数编程