一、匿名函数

  • 含义:

    以前我们所定义的函数都是有名字的,而匿名函数顾名思义就是没有名字的函数;
    匿名函数适用于一些简单的操作,与其他函数配合使用,且匿名函数会自动返回结果;

  • 格式:

    # 定义:
    lambda 参数1, 参数2: 进行需要的操作
    
    # 定义并调用(极少用)
    (lambda x, y: x + y)(2, 3)  # 后面的括号内传实参;返回:5
    
    # 保存匿名函数的地址后调用(没意义)
    func = lambda x, y: x+y
    func(2, 3)  # 返回:5
    
    # 与其他函数配合使用(正确用法)
    
  • 举例:

    使用max函数,查找字典的最大值;max的参数key是比较大小的依据,不写这个参数就会使用键来比较大小:

    score = {
         
        'Tom': 87,
        'Jerry': 92,
        'Speike': 72
    }
    
    max_score = max(score, key=lambda k: score[k])  # 使用key对应的value作为比较依据
    
    print(max_score)  # 打印:Jerry
    

    还有min,sorted等函数,都可以使用这种方法。

二、高阶函数

  • 什么是高阶函数:

    高阶函数满足函数式编程的要求,可以接收函数作为参数,或返回值为一个函数。下面的函数都属于高阶函数:

  • map函数:

    • 格式:

      map(函数, 可迭代对象)
      
    • 作用:

      遍历可迭代对象,将元素传入函数中处理,返回一个生成器对象。

      比如,遍历一个整数组成的列表,将每一个整数取出,传入float函数中,转换为浮点数。用map就可以很方便的实现。

  • filter函数:

    • 格式:

      filter(返回值为布尔类型的函数, 可迭代对象)
      
    • 作用:

      遍历可迭代对象,将元素传入函数中判断,返回一个生成器对象。

  • reduce函数:

    • 格式:

      from functools import reduce
      
      reduce(函数, 可迭代对象[,初始值])
      
    • 作用:

      先对可迭代对象中的第 1、2 个元素传入函数进行运算(有初始值就用初始值和第1个元素),得到的结果再与第3个数据一起传入函数运算,最后得到一个结果。

下一篇