【Python】学习笔记——-5.1、高阶函数

高效Python必备之高阶函数 Python 高阶函数详解 阅读详情

高阶函数英文叫Higher-order function。什么是高阶函数?我们以实际代码为例子,一步一步深入概念。

变量可以指向函数

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

>>> abs(-10)
10

但是,如果只写abs呢?

>>> abs
<built-in function abs>

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

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

>>> x = abs(-10)
>>> x
10

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

>>> f = abs
>>> f
<built-in function abs>

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

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

>>> f = abs
>>> f(-10)
10

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

函数名也是变量

那么函数名是什么呢?函数名其实就是指向函数的变量!对于abs()这个函数,完全可以把函数名abs看成变量,它指向一个可以计算绝对值的函数!

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

>>> 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交互环境。

注:由于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

用代码验证一下:

>>> add(-5, 6, abs)
11

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

小结

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

优雅而高效的JavaScript——高阶函数 JavaScript是一种高级编程语言,它支持高阶函数。高阶函数是指可以接受一个或多个函数作为参数,或者返回一个函数的函数。在JavaScript中,函数是一等公民,这意味着函数可以像变量一样被传递、赋值和使用。这个特点使得JavaScript非常适合使用高阶函数。在本文中,我们将学习什么是高阶函数,以及如何在JavaScript中使用它们。我们还将探讨高阶函数的一些常见用途,如函数组合、柯里化和延迟执行。最后,我们将介绍一些常见的高阶函数,如map、filter和reduce。 阅读详情

相关推荐

Python编程 高阶函数使用技巧

Python编程,高阶函数的使用技巧。包括map函数、filter函数、sorted函数、reduce函数。

叶庭云 成为自己的光 1906

python中的高阶函数

@ 1 什么是高阶函数? 只要满足下面的任意一个条件就是高阶函数 1、一个函数的函数名作为参数传给另外一个函数 2、一个函数返回值(return)为另外一个函数(返回为自己,则为递归) 下面分别举例详细说明: 1.1 高阶函数:一个函数的函数名作为参数传给另外一个函数 def func(): print("定义一个普通函数") def high_level(func): ...

求真、务实 1万+

微信小程序利用Echarts加载中国地图的步骤

微信小程序如何利用Echarts加载地图?可按照如下四个步骤进行。(阅读时间大概3分钟)。

成都都成 5275

什么是高阶函数,常见的高阶函数 有哪些?

什么是高阶函数,常见的高阶函数 有哪些?如果一个函数符合下面2个 规范中任何一个,那该函数就是高阶函数

唐家小妹的博客 5570

Fiddler Everywhere保姆级教程:10分钟搞定手机HTTPS抓包(附证书配置避坑指南)

本文提供Fiddler Everywhere移动端HTTPS抓包的保姆级教程,涵盖环境配置、代理设置、证书安装及常见问题排查。重点解析如何正确安装并信任Fiddler根证书以解密HTTPS流量,帮助开发者快速搭建抓包环境,高效分析应用网络行为,提升调试效率。

git9versioner的博客 705

Polyworks宏脚本开发入门:5分钟搞定环境搭建与基础命令录制

本文详细介绍了Polyworks宏脚本开发的入门指南,包括环境搭建、基础命令录制和核心对象操作。通过5分钟快速启动开发模式,掌握自动化操作流程和脚本调试技巧,帮助工程师高效完成工业测量与三维检测任务。

weixin_29306875的博客 536

高阶函数

前面的话 什么是高阶函数?这篇文章从定义开始介绍什么是高阶函数。 高阶函数 高阶函数(Higher-order function)一般指操作函数的函数,至少满足下列条件之一: 接受一个或多个函数作为输入 输出一个函数 高阶函数是对其他函数进行操作的函数,可以将它们作为参数传入,或者返回。即高阶函数是一个接受函数作为参数传递或者将函数作为返回值输出的函数 参数传递 把函数作为参数传递,代表可以抽...

小柒的前端之旅 1031

基于Pixi.js的Live2D看板娘离线加载实战指南

本文详细介绍了基于Pixi.js实现Live2D看板娘离线加载的完整方案,涵盖环境搭建、模型加载、交互功能实现及常见问题解决。通过Pixi.js的硬件加速优势,开发者可在Web和Electron项目中无缝集成离线运行的Live2D模型,提升用户体验并避免网络依赖问题。

weixin_29001423的博客 343

【Python】学习笔记——-5.1.2、高阶函数之filter

Python内建的filter()函数用于过滤序列。 和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。 例如,在一个list中,删掉偶数,只保留奇数,可以这么写: def is_odd(n): return n % 2 == 1 l

你只管努力, 1474

NL2SQL实践系列(1):深入解析Prompt工程在text2sql中的应用技巧

NL2SQL实践系列(1):深入解析Prompt工程在text2sql中的应用技巧

丨汀、的博客 4327

化工仿真软件:gPROMS二次开发_(1).gPROMS基础知识

在gPROMS中,模型是通过定义变量、参数和方程来创建的。模型可以是简单的单元操作,如换热器、反应器,也可以是复杂的系统,如整个化工流程。变量是模型中表示状态或输出的量。在gPROMS中,变量需要显式定义其类型和单位。# 定义变量VAR# 温度变量,单位为K# 压力变量,单位为Pa# 组分摩尔分数,数组变量参数是模型中表示常量或初始条件的量。参数同样需要定义其类型和单位。# 定义参数PAR# 理想气体常数,单位为J/(mol·K)# 反应器体积,单位为m^3# 初始摩尔数。

kkchenjj的博客 617

【Python】学习笔记——-5.1.3、高阶函数之sorted

排序算法 排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。 Python内置的sorted()函数就可以对list进行排序: >>> sorted([36, 5, -12, 9, -21]) [-21,

你只管努力, 700

置顶必读(1) | 2026最新首发,全网最全 Spring Boot 学习宝典(附思维导图)

从0到1以知识点+实例+项目的教学模式对SpringBoot框架由浅入深进行学习,快来跟bug菌一起学习吧。

**My Coding Family** 16万+

【Python】学习笔记——-5.1.1、高阶函数之map/reduce

Python内建了map()和reduce()函数。 如果你读过Google的那篇大名鼎鼎的论文“MapReduce: Simplified Data Processing on Large Clusters”,你就能大概明白map/reduce的概念。 我们先看map。map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果

你只管努力, 742

win10锁屏或登录时会自动弹出触摸按键的问题解决办法

本篇文章主要讲解win10锁屏或登录时会自动弹出触摸按键的问题解决方式。日期:2023年5月17日作者:任聪聪。

任聪聪的博客 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【Python】—— 高阶函数

高阶函数详解

m0_56069910的博客 1856

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Python常用高阶函数

高阶函数是在Python中一个非常有用的功能函数,所谓高阶函数就是一个函数可以用来接收另一个函数作为参数,这样的函数叫做高阶函数。 为了便于理解,我们从实际例子来看看函数当做参数被传递到另个函数是什么样的。我们把abs()函数赋值给了f变量,接下来你就可以像使用abs()函数本身那样使用f变量了,区别只是换了个名字而已。 # 将求绝对值的abs函数赋值给f变量 f = abs # f变量等同于ab...

Anders's Blog 6580

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Python入门10:高阶函数

高阶函数是指接受函数作为参数或者返回函数作为结果的函数。它在函数式编程中是一个重要概念(函数式编程(Functional ProgrammingFP)是一 种编程范式,它将计算视为数学函的求值,并且避免使用可变数据结构和 改变状态的操作。函数式编程的核心思想是将函数作为程序的基本构建块, 强调不可变性和纯函数的使用)。

m0_74488469的博客 2055

什么是 Python 高阶函数?

在 Python 编程中,高阶函数(Higher-Order Function) 是指接受一个或多个函数作为参数,或者返回一个函数作为结果的函数。高阶函数是函数式编程(Functional Programming)的重要概念,它能够让代码更加简洁、灵活,并提高代码的复用性。本文将深入介绍 Python 高阶函数的概念、常见用法,以及它们在实际编程中的应用。

1085

python 高阶函数和 functools 模块

python高阶函数和functools模块

weixin_65289420的博客 1521

Python 高阶函数(详解)

1、当定义函数时,函数的参数是一个函数,那么定义的这个函数可以称为高阶函数。2、调用高阶函数时需要特别注意,由于高阶函数中参数类型是个函数,因此在进行调用时,我们只需要传递函数的名字即可,而不是进行函数调用。3、函数作为参数的类型时,可以是内置的函数,如abs,也可以是其它模块下的函数,如sqrt,也可以是自定义的函数,如num_num,像上面代码中num_num函数的函数体只有一行代码,可以用lambda表达式的方式写。

2301_78209919的博客 1817

python中的高阶函数的定义及内置高阶函数

高阶函数介绍 普通函数中的参数是一种数据类型,比如列表,字符串,整型 高阶函数的实参是一个函数名,函数的返回值是一个函数。 例如在python中有一个函数是 abs 用来求整型的绝对值: 函数可以复制成一个变量。 def fun(x,y,f): return f(x),f(y) print(fun(-10,34,abs)) # f = abs 几个内置高阶函数 ma...

thermal_life的博客 1759

python高阶函数 —— 内置高阶函数、返回值为函数、函数作为参数、闭包

文章目录一、什么是高阶函数?二、 python 内置高阶函数:map、filter、reduce、sort、sorted2.1、 filter() 过滤出符合条件的元素2.2、 map() 对所有元素做指定的操作2.3、 reduce() 合并2.4、 sort() 排序2.5、 sorted() 排序三、 闭包——也是高阶函数3.1、 形成闭包的必要条件 一、什么是高阶函数? 高阶函数:一个函...

猎人在吃肉 1260

python学习之高阶函数

一、函数式编程 在Python中,函数是一等对象 - 一等对象一般都会具有如下特点: ① 对象是在运行时创建的 ② 能赋值给变量或作为数据结构中的元素 ③ 能作为参数传递 ④ 能作为返回值返回 就是将一个一个的功能通过函数来完成,python支持函数式编程,但python不是函数式编程语言。 二、什么是高阶函数 接收函数作为参数,或者将函数作为返回值的函数是高阶函数 当我们使用一个函数作为参数时,实际上是将指定的代码传递进了目标函数。 高阶函数至少要符合以下两个特点中的一个 ① 接收一个或多个

familyyan的博客 2386

Python高阶函数总结

前言:本博文主要讲解Python高阶函数的概念与用法,更多知识请访问:深入浅出Python——Python高级语法之函数 一、高阶函数 把函数作为参数传入,这样的函数称为高阶函数,高阶函数是函数式编程的体现。函数式编程就是指这种高度抽象的编程范式。 ...

路虽远,行则必至! 1457

Python高阶函数详解:让代码更优雅高效

高阶函数(Higher-order Function)是函数式编程中的一个重要概念,它是指能够接收其他函数作为参数,或者将函数作为返回值的函数。在Python中,函数是一等对象(First-class Object),这意味着函数可以像其他数据类型一样被传递和使用。除了使用内置的高阶函数,我们也可以创建自己的高阶函数。# 创建一个高阶函数,能够根据不同的策略处理字符串"""应用策略处理文本"""# 定义几个策略函数# 测试。

wyy202206174248的博客 1396
上一篇: 【Python】学习笔记——-5.0、函数式编程
下一篇: 【Python】学习笔记——-5.1.1、高阶函数之map/reduce
白衣染霜陈
博客等级 码龄22年 682粉丝 338原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值