高阶函数
First Class Object
<ul>
<li>
函数在python中是一等公民
</li>
<li>
函数也是对象,可调用的对象
</li>
<li>
函数可以作为普通变量、参数、返回值等
</li>
</ul>
</li>
<li>
高阶函数 <ul>
<li>
数学概念 y = g(f(x))
</li>
<li>
在数学和计算机科学中,高阶函数应当是至少满足下面一个条件的函数
</li>
<li>
接收一个或多个函数作为参数
</li>
<li>
输出一个函数
</li>
</ul>
</li>
通过自定义sort函数来理解什么高阶函数
排序问题
<ul>
<li>
仿照内建函数sorted,请自行实现一个sort函数(不适用内建函数),能够为列表元素排序
</li>
</ul>
</li>
<li>
思路
<ul>
<li>
内建函数sorted函数是返回一个新的列表,可以设置升序或降序,可以设置一个排序的函数,自定义的sort函数也要实现这个功能
</li>
<li>
新建一个列表,遍历原列表,和新列表的值依次比较决定如何插入到新列表中
</li>
</ul>
</li>
下面是实现过程: 第一步,先实现基础功能,后续再分步优化
第二步,使用参数控制顺序
我们先来看看这里不用参数如何反转顺序排列
这里在代码块里设置了一个flag,并且用三元表达式来表示x和y的关系
第三步,我们进一步优化
这里我们传了一个参数,用来控制x和y的关系,且该实参是一个函数,用的是lambda函数,这里的lambda接收两个参数,最后返回的是布尔值,如果a>b成立返回True,否则返回False,
对应代码块中的fn(x,y)
现在我们来了解下内建函数—高阶函数
结合lambda函数,可以对字典里的value进行排序
柯里化
示例
通过嵌套函数可以把函数转换成柯里化函数