python基础—高阶函数

时间:2022-07-22
本文章向大家介绍python基础—高阶函数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
高阶函数
    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)

现在我们来了解下内建函数—高阶函数

  • sorted(iterable,key,reverse)   排序
    • 返回一个新的列表,对一个可迭代对象的所有元素排序,排序规则为key定义的函数,reverse表示是否排序反转
    • 返回新的列表

结合lambda函数,可以对字典里的value进行排序

  • filter(function,iterable)   过滤数据
    • 过滤可迭代对象的元素,返回一个迭代器
    • function一个具有一个参数的函数,返回bool
  • map(function,*iterable)   映射
    • 对多个可迭代对象的元素按照指定的函数进行映射,返回一个迭代器

柯里化

  • 指的是将原来接受两个参数的函数变成新的接受一个参数的函数的过程,新的函数返回一个以原有第二个参数为参数的函数
  • z=f(x,y)转换成z=f(x)(y)的形式

示例

通过嵌套函数可以把函数转换成柯里化函数