1、变量可以指向函数

以内置的求绝对值abs()函数为例,:

>>> abs(-12)
12
>>> abs
<built-in function abs>
>>> m = abs
>>> m
<built-in function abs>
>>> m(-12)
1

可知,函数本身可以赋值给变量,即:变量指向函数。此时,我们可以通过变量来调用这个函数!

2、函数名其实也是变量

>>> abs = 10
>>> abs(-10)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable

当abs指向10的时候,就无法通过abs(-10)调用该函数了。因为函数名其实就是一个指向函数的变量!abs这个变量已经指向一个整数-10!要恢复abs的原始功能,就要重启python的交互环境了。

3、高阶函数

既然变量可以指向函数,而函数的参数又能接收变量,那么一个函数就可以接收另外一个函数作为参数。这样的函数就是高阶函数。简单举例:

>>> def add(x,y,f):
... return f(x)+f(y)
...
>>> add(6,7,abs)
13

推导过程如下:

x = 6
y = 7
f = abs
f(x) + f(y) ==> abs(6) + abs(7) ==> 11
return 13

Python——高阶函数概念(Higher-order function)的更多相关文章

  1. python——高阶函数:高阶函数

    python高阶函数 00初识高阶函数 一等公民 函数在python中是一等公民(First-Class Object),同样和变量一样,函数也是对象,只不过是可调用的对象,所以函数也可以作为一个普通 ...

  2. Python高阶函数_map/reduce/filter函数

    本篇将开始介绍python高阶函数map/reduce/filter的用法,更多内容请参考:Python学习指南 map/reduce Python内建了map()和reduce()函数. 如果你读过 ...

  3. Python高阶函数及函数柯里化

    1 Python高阶函数 接收函数为参数,或者把函数作为结果返回的函数为高阶函数. 1.1 自定义sort函数 要求:仿照内建函数sorted,自行实现一个sort函数.内建函数sorted函数是返回 ...

  4. python 高阶函数之filter

    前文说到python高阶函数之map,相信大家对python中的高阶函数有所了解,此次继续分享python中的另一个高阶函数filter. 先看一下filter() 函数签名 >>> ...

  5. 用一个简单的例子来理解python高阶函数

    ============================ 用一个简单的例子来理解python高阶函数 ============================ 最近在用mailx发送邮件, 写法大致如 ...

  6. python高阶函数的使用

    目录 python高阶函数的使用 1.map 2.reduce 3.filter 4.sorted 5.小结 python高阶函数的使用 1.map Python内建了map()函数,map()函数接 ...

  7. 高阶函数概念以及map/filter/reduce

    什么样的函数叫高阶函数:map(func, *iterables) --> map object 条件:1.函数接受函数作为参数 2.函数的返回值中包含函数 num_l = [1,2,3,4,5 ...

  8. python 高阶函数一 概念

    一.2个概念: 1.变量可以指向函数本身 >>> abs <built-in function abs> >>> f = abs >>> ...

  9. python 高阶函数 与关键字参数

    修饰器 之前我一直有一个疑惑,就是修饰器里面对函数的操作为什么不能直接写进函数里面就好了吗?何必这么麻烦呢,当我进一步理解之后,原来修饰器的作用就是完成那些不能写进函数里面的功能的,好比必须要等到函数 ...

随机推荐

  1. Java 从入门到进阶之路(十一)

    之前的文章我们介绍了一下 Java 中的继承,接下来我们继续看一下 Java 中的继承. 在有些时候,我们通过类继承的方式可以获取父类的方法,但是有些时候父类为我们提供的方法并不完全符合我们的需求,这 ...

  2. 使用正则表达式实现(加减乘除)计算器(C#实现)

    起因:公司领导要求做一款基于行业规范的计算器, 然后需要用户输入一些数据,然后根据用户输入的数据满足某些条件后,再根据用户输入的条件二进行加减乘除运算.;-) 期间因为查找规范等形成数据表的某一列是带 ...

  3. IJKPlayer如何支持https

    给ijkplayer安装支持https 首先使用如下终端命令安装yasm 第一: 1. curl http://www.tortall.NET/projects/yasm/releases/yasm- ...

  4. Xcode中.a文件引起的错误

    一.     TARGETS -> Build Settings-> Search Paths下 1.  Library Search Paths 删除不存在的路径,保留.a文件的路径(此 ...

  5. react-native StatusBar透明

    目录 一 react-native 自定义AppStatusBar 二 配置 android 一 react-native 自定义AppStatusBar 透明 StatusBar字体黑色, 否则是白 ...

  6. JSTL学习

    基本标签: out标签:<c:out value="${表达式}" default="默认值"></c:out> 作用:结合EL表达式将 ...

  7. win7系统的用户去掉用户账户控制 提升管理员

    可以在组策略中进行设置 —— “以管理员身份运行”方式打开命令提示符(CMD)后键入 gpedit.msc 打开组策略后作如下更改:<br/>在“计算机配置”-“Windows 配置”-“ ...

  8. CodeForces1000A-Light It Up

    B. Light It Up time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  9. 笔记||Python3之模块与包

    模块的概念:一个.py文件就称之为一个模块. 包的概念:把许多个模块按照功能放到不同的目录中来组织模块,这些组织存放模块文件的目录,我们称之为包. 模块与包的优势:1- 方便别人调用 2 - 避免同名 ...

  10. 【VUE】自定义组件

    [VUE]自定义组件 转载: ============================================ ======================================== ...