美文网首页
高阶函数(Python)

高阶函数(Python)

作者: Dozing | 来源:发表于2018-10-04 23:13 被阅读6次

什么是高阶函数(Python)?

高阶函数:能接收函数做参数的函数

  1. 变量可以指向函数
  2. 函数的参数可以接受变量
  3. 一个函数可以接收另一个函数作为参数
  4. 能接收函数作参数的函数就是高阶函数

函数名其实就是指向函数的变量

什么是匿名函数?

1. 所谓的匿名函数,意思为不在使用def语句这样的标准形式定义一个函数。

  • lambda只是一个表达式,函数体比def简单很多
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去
  • lambda函数拥有自己的命名空间,且不能访问自己参数列表之外或者全局命名空间里的参数
  • 虽然lambda函数看起来只有一行,却不等同于C或者C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率
  1. 匿名函数lamdba语法:
lambda [arg1,[arg2,......argn]]:expression
# lambda 参数列表:return[表达式]变量
# 由于lambda返回的是函数对象(构建的是一个函数对象),所以需要定义一个变量去接收

3.匿名函数的优点

  • 使用Python写一些脚本时,使用lambda可以省去定义函数的过程,让代码更加精简
  • 对于一些抽象的,不会被别的地方再重复使用的函数,有时候函数起名字也是个难题,使用lambda不需要考虑命名的问题
  • 使用lambda在某些时候能让代码更容易理解

其他的高阶函数

  • map()函数
  • reduce()函数
  • filter()函数
  • sorted()函数

闭包

def calc_sum(lst):
      def lazy_sum():
            return sum(lst)
      return lazy_sum

上述的例子中,无法吧lazy_sum移到calc_sum外部,因为它引用了calc_sum的参数lst.
这种内层函数引用了外层函数的变量(参数也是变量)。然后返回内层函数的情况,称为闭包
闭包的特点是返回的函数还引用了外层函数的局部变量。所以,要正确使用闭包。就要确保引用的局部变量在函数返回后不能变.举例如下:

# 希望一次返回3个函数,分别计算1x1,2x2,3x3
def count():
      fs = []
      for i in range(1,4):
           def f():
                  return i*i
           fs.append(f)
      return fs

f1,f2,f3 = count()

你可能认为调用f1(),f2()和f3()结果应该是1,4,9,但实际结果全部都是9
原因就是当count()函数返回了3个函数时,这3个函数所引用的变量i的值已经变成了3,由于f1,f2,f3并没有被调用,所以,此时它们并未计算i*i,当f1被调用时:

>>>f1()
9
# 因为f1现在才计算i*i,但现在i的值已经变为3

Python表达式:

典型的表达式一般由运算符和操作数/操作对象组成。
运算符:对操作数/操作对象进行运算处理的符号
操作数/操作对象:运算符处理的数据

在条件表达式中常用的运算符如下:
(1) 算术运算符:+ - * / // % ** ~
(2) 关系运算符:> < == != <> <= >=
(3) 测试运算符:in,not in,is, not is
(4) 逻辑运算符:and, or ,not
参考下面的博客
python基础表达式与选择结构
python运算符和表达式

相关文章

  • python装饰器

    装饰器简述 要理解装饰器需要知道Python高阶函数和python闭包,Python高阶函数可以接受函数作为参数,...

  • Python高阶函数

    本文要点 1.什么是高阶函数 2.python中有哪些常用的高阶函数 什么是高阶函数? 在了解什么是高阶函数之前,...

  • wangyanhua--python2

    基本函数的使用 匿名函数 常用系统高阶函数 高阶函数 常用系统高阶函数 Python递归 安装第三方库 三国小说人...

  • Python函数式介绍一 - 高阶函数

    Python函数式介绍一 - 高阶函数Python函数式介绍二 - 链式调用 最近为了给朋友推广Python函数式...

  • Python高阶函数学习笔记

    python中的高阶函数是指能够接收函数作为参数的函数 python中map()函数map()是 Python 内...

  • 【Python】-014-函数-函数式编程-2

    python内置高阶函数 Filter函数filter(function, sequence) -> list, ...

  • 函数式编程--高阶函数

    高阶函数英文叫Higher-order function。什么是高阶函数?举例说明。变量可以指向函数以Python...

  • 高阶函数(Python)

    什么是高阶函数(Python)? 高阶函数:能接收函数做参数的函数 变量可以指向函数 函数的参数可以接受变量 一个...

  • filter函数有点意思

    filter函数 filter(function, iterable)filter函数是python中的高阶函数,...

  • 高阶python 函数式编程

    高阶python 函数式编程 - 函数式 函数式编程(FunctionalProgramming) - 基于lam...

网友评论

      本文标题:高阶函数(Python)

      本文链接:https://www.haomeiwen.com/subject/sbrfaftx.html