高阶函数英文叫Higher-order function。

什么是高阶函数?

我们以实际代码为例子,一步一步深入概念。

变量可以指向函数

以Python内置的求绝对值的函数abs()为例,调用该函数用以下代码:

>>> abs(-10)

10

但是,如果只写abs呢?

>>> abs

可见,abs(-10)是函数调用,而abs是函数本身。

要获得函数调用结果,我们可以把结果赋值给变量:

>>> x = abs(-10)

>>> x

10

但是,如果把函数本身赋值给变量呢?

>>> f = abs

>>> f

结论:函数本身也可以赋值给变量,即:变量可以指向函数。

如果一个变量指向了一个函数,那么,可否通过该变量来调用这个函数?

用代码验证一下:

>>> f = abs

>>> f(-10)

10

成功!说明变量f现在已经指向了abs函数本身。直接调用abs()函数和调用变量f()完全相同。

函数名也是变量

那么函数名是什么呢?

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

对于abs()这个函数,完全可以把函数名abs看成变量,它指向一个可以计算绝对值的函数!

如果把abs指向其他对象,会有什么情况发生?

>>> abs = 10

>>> abs(-10)

Traceback (most recent call last):

File "", line 1, in

TypeError: 'int' object is not callable

把abs指向10后,就无法通过abs(-10)调用该函数了!因为abs这个变量已经不指向求绝对值函数而是指向一个整数10!

当然实际代码绝对不能这么写,这里是为了说明函数名也是变量。

要恢复abs函数,请重启Python交互环境。

注:由于abs函数实际上是定义在import builtins模块中的,所以要让修改abs变量的指向在其它模块也生效,要用import builtins; builtins.abs = 10。

传入函数

既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

一个最简单的高阶函数:

def add(x, y, f):

return f(x) + f(y)

当我们调用add(-5, 6, abs)时,参数x,y和f分别接收-5,6和abs,根据函数定义,我们可以推导计算过程为:

x = -5

y = 6

f = abs

f(x) + f(y) ==> abs(-5) + abs(6) ==> 11

return 11

编写高阶函数,就是让函数的参数能够接收别的函数。

小结

把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式。

python绝对值编程_Python高阶函数相关推荐

  1. python函数式编程、高阶函数

    1.map() python内置的高阶函数,接收一个函数f和一个list,并通过把函数f依次作用在list的每个元素上,得到一个新的list并返回. def f(x):return x * xprin ...

  2. python按照绝对值排序_Python高阶函数sorted排序

    sorted用法 sorted是Python提供的功能强大的排序函数.满足字符,数字等排序要求. 对数字进行排序: list = [-12, -2, -24, 20, 39, 10]; print(s ...

  3. python内置高阶函数求导_Python——函数式编程、高阶函数和内置函数,及

    Python--函数式编程.高阶函数及内置函数 函数式编程 一.不可变数据:不用变量保存状态不修改变量 二.第一类对象:函数即"变量" 1.函数名可以当做参数传递 2.返回值可以是 ...

  4. py函数式编程(高阶函数map/reduce/filter/sorted、闭包函数/返回函数、匿名函数lamber、@装饰器decorator、偏函数functool.partial())

    #py函数式编程.py #高阶函数map/reduce/filter/sorted.闭包函数/返回函数.匿名函数lamber.@装饰器decorator.偏函数functool.partial()# ...

  5. Python中常用的高阶函数

    Python 中常用的高阶函数 ① filter(function,iterable)filter(function, iterable)filter(function,iterable)   过滤器 ...

  6. Python学习日志10 - 高阶函数和高级应用

    Python学习日志 RBHGO的主页欢迎关注 温馨提示:创作不易,如有转载,注明出处,感谢配合~ 目录 文章目录 Python学习日志 目录 前言 进入正题 Python学习日志10课 - 高阶函数 ...

  7. python高阶函数心得体会_Python高阶函数使用总结

    Datawhale干货   作者:皮钱超,厦门大学,Datawhale原创作者 本文约2000字,建议阅读6分钟 审稿人:耿远昊,Datawhale成员,华东师范大学,开源教程<Joyful-P ...

  8. python中高阶函数和装饰器_Python高阶函数与装饰器函数的深入讲解

    本文主要介绍的是Python高阶函数与装饰器函数的相关内容,分享给大家,下面话不多说了,来一起看看详细的介绍吧 高阶函数 1.可以使用函数对象作为参数的函数 2.或可以将函数作为返回值的函数 3.函数 ...

  9. python 惰性序列_菜鸟学飞自学Python(五)高阶函数

    (仅个人学习摘抄) 函数式编程 函数式编程就是一种抽象程度很高的编程范式,特点是允许把函数本身作为参数传入到另一个函数,还允许返回一个函数. 高阶函数 高阶函数--Higher-order funct ...

最新文章

  1. 多媒体互动受青睐,演绎未来3G网络
  2. maven 父maven_Maven的鸟瞰图
  3. ServiceComb中的数据最终一致性方案
  4. 在github网页版里新建文件夹,放置很多子文件:添加斜杠自动生成文件夹
  5. 【Elasticsearch】Elasticsearch中的相似度评分介绍
  6. SAP License:COPA特性值转换
  7. React Native 接入微博、微信、QQ 登录功能
  8. 电商搜索同义词库(synonyms)
  9. springcloud 远程rpc调用接口
  10. c语言int函数使用方法,int函数的使用方法_Excel中int函数的操作用法
  11. GOD IS A GIRL 创作背后感人的故事
  12. 芯片烧录器编程AT24C02
  13. 怎样才能画好古代汉服?画好古代汉服有哪些技巧?
  14. 域名查询工具DMitry
  15. 首页推荐流支持快捷修改兴趣标签,问答支持展示gif【2021.11.8】
  16. 酒链世界为何会火起来?酒链世界是什么?
  17. 常用电脑硬件检测工具下载
  18. 空间直线方程及其与面线的夹角
  19. 防火墙 iptables
  20. DeepFM 中参数的理解

热门文章

  1. 将十进制数转化为十六进制数
  2. 程序猿应该了解的内容以及程序猿如何强迫自己学习(算法篇)
  3. 呼叫中心管理系统的优势
  4. 解决spring boot项目中Caused by: com.atomikos.icatch.RollbackException: Prepare: NO vote异常
  5. 硒鼓加粉的几点技巧与注意事项
  6. 文本分类(朴素贝叶斯算法)
  7. 转让王菲上海演唱会第一场的门票
  8. 利用爬虫写一个智能垃圾桶
  9. DDCTF2018逆向 黑盒
  10. Python语言-NL-turtle八边形绘制