1、高阶函数的定义

把函数作为参数传入(把一个函数作为另外一个函数的参数),或者将一个函数作为返回值的函数(闭包),这样的函数称为高阶函数,满足其一即可。

高阶函数是函数式编程的体现,函数式编程就是指这种高度抽象的编程范式。

2、体验高阶函数

在Python中,abs()函数可以完成对数字求绝对值计算。

abs(-10)  # 10

round()函数可以完成对数字的四舍五入计算。

round(1.2)  # 1
round(1.9) # 2

需求:任意两个数字,按照指定要求整理数字后再进行求和计算。

  • 方法1
def add_num(a, b):
return abs(a) + abs(b) result = add_num(-1, 2)
print(result) # 3
  • 方法2
# 高阶函数:第三个参数f接收的是要给函数名,用来接收将来传入的函数
# 如果我传入绝对值方法,就按绝对值整理数值
# 如果我传入四舍五入方法,就按四舍五入整理数值
def sum_num(a, b, f):
return f(a) + f(b) result = sum_num(-1, 2, abs)
print(result) # 3 """
我们也可以自定义函数,代替abs参数。
"""

注意:两种方法对比之后,发现,方法2的代码会更加简洁,函数灵活性更高。

函数式编程大量使用函数,减少了代码的重复,因此程序比较短,开发速度较快。

3、内置高阶函数

(1)map()函数

map(func, lst),将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表(Python2)/迭代器(Python3)返回。

换句话说就是,map()函数可以对可跌倒对象中的所有元素做指定的操作,然后将其添加到一个新的对象中返回。

需求:计算list1序列中各个数字的2次方。

# 1. 准备列表数据
list1 = [1, 2, 3, 4, 5] # 2. 准备2次方计算的函数
def func(x):
return x ** 2 # 3. 调用map
result = map(func, list1) # 4. 验收成果
print(result) # <map object at 0x0000013769653198>
print(list(result)) # [1, 4, 9, 16, 25]

(2)reduce()函数

reduce(func,lst),其中func必须有两个参数。每次func计算的结果继续和序列的下一个元素做累积计算。

注意:reduce( )传入的参数func必须接收2个参数。

需求:计算list1序列中各个数字的累加和。

# 导入模块
import functools list1 = [1, 2, 3, 4, 5] def func(a, b):
return a + b # 调用reduce,作用:功能函数计算的结果和序列的下一个数据做累计计算
result = functools.reduce(func, list1) print(result) # 15

(3)filter()函数

filter(func, lst)函数用于过滤序列, 过滤掉不符合条件的元素, 返回一个filter对象。如果要转换为列表, 可以使用list( )来转换。

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 定义功能函数:过滤序列中的偶数
def func(x):
return x % 2 == 0 # 调用filter
result = filter(func, list1) print(result) # <filter object at 0x0000017AF9DC3198>
print(list(result)) # [2, 4, 6, 8, 10]

Python支持函数式编程,但Python不能说是一个函数式编程语言(用的不多知道就行)。

『无为则无心』Python函数 — 33、高阶函数的更多相关文章

  1. 『无为则无心』Python函数 — 25、Python中的函数

    目录 1.函数的使用 (1)定义函数 (2)调用函数 (3)使用函数的注意事项 2.函数的参数 3.实参的类型 Python函数的说明: Python中函数的应用非常广泛,前面章节中我们已经接触过多个 ...

  2. 『无为则无心』Python函数 — 28、Python函数的简单应用

    目录 1.函数嵌套调用 2.Python函数的简单应用 (1)打印线条 (2)函数计算 (3)打印图形 3.函数的说明文档 (1)函数的说明文档的作用 (2)函数说明文档的语法 (3)查看函数的说明文 ...

  3. 『无为则无心』Python函数 — 32、递归

    目录 1.什么叫递归函数 2.递归的应用场景 3.递归的特点 4.应用:3以内数字累加和 5.应用:阶乘 6.总结 1.什么叫递归函数 Python中,在函数内部,可以调用其他函数.如果一个函数在内部 ...

  4. 『无为则无心』Python基础 — 4、Python代码常用调试工具

    目录 1.Python的交互模式 2.IDLE工具使用说明 3.Sublime3工具的安装与配置 (1)Sublime3的安装 (2)Sublime3的配置 4.使用Sublime编写并调试Pytho ...

  5. 『无为则无心』Python基础 — 10、Python字符串的格式化输出

    目录 1.什么是格式化输出 2.Python格式化输出的五种方式 方式一:字符串之间用+号拼接 方式二:print()函数可同时输出多个字符串 方式三:占位符方式 方式四:f格式化方式(推荐) 方式五 ...

  6. 『无为则无心』Python基础 — 11、Python中的数据类型转换

    目录 1.为什么要进行数据类型转换 2.数据类型转换本质 3.数据类型转换用到的函数 4.常用数据类型转换的函数 (1)int()函数 (2)float()函数 (3)str()函数 (4)bool( ...

  7. 『无为则无心』Python序列 — 23、Python序列的公共API

    目录 1.运算符 @1.+加号 @2.*乘号 @3.in或not in 2.公共方法 @1.len()方法 @2.del和del() @3.max()方法 @4.min()方法 @5.range() ...

  8. 『无为则无心』Python基础 — 41、Python中文件的读写操作(一)

    目录 1.文件操作步骤 2.文件的读写操作 (1)文件的打开 (2)打开文件模式 (3)获取一个文件对象 (4)关于文件路径 1.文件操作步骤 当我们要读取或者写入文件时,我们需要打开文件,在操作完毕 ...

  9. 『无为则无心』Python面向对象 — 45、面向对象编程

    目录 1.面向对象编程的概念 2.面向对象编程和面向过程编程的区别 (1)面向过程编程 (2)面向对象编程 3.举例理解面向对象 4.Python的面向对象编程 5.面向对象的几大核心特性 1.面向对 ...

随机推荐

  1. "delete this" in C++

    Ideally delete operator should not be used for this pointer. However, if used, then following points ...

  2. Shell脚本实现自动修改IP地址

    作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名 ...

  3. BeanDefinitionLoader spring Bean的加载器

    spring 容器注册bean , 会把bean包装成beanDefinition 放进spring容器中,beanDefinitionLoader就是加载bean的类 . 一.源码 class Be ...

  4. 【Java 8】函数式接口(一)—— Functional Interface简介

    什么是函数式接口(Functional Interface) 其实之前在讲Lambda表达式的时候提到过,所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法. 这种类型的接 ...

  5. mybtis入门

    1.编写持久化对象 public class User { private String id;//用户编号 private String username;//用户名 private String ...

  6. ZooKeeper 06 - ZooKeeper 的常用命令

    目录 1 - 服务端常用命令 2 - 客户端常用命令 3 - 常用四字命令 4 - ZooKeeper 日志的可视化 版权声明 若要部署 ZooKeeper 单机环境,请查看此篇:https://ww ...

  7. 魅族CMDB运维自动化实践

    一.简介 原创:梁鹏 本文是根据魅族系统架构师梁鹏10月20日在msup携手魅族.Flyme.百度云主办的第十三期魅族技术开放日< 魅族CMDB运维自动化实践>演讲中的分享内容整理而成. ...

  8. Jenkins 报错合集

    目录 一.启动项目显示,没有接受许可之前不能够自动安装 二.明明配置了jdk但还是说找不到 三.jenkins-RestAPI调用出现Error 403 No valid crumb was incl ...

  9. [BUUCTF]PWN——babyheap_0ctf_2017

    [BUUCTF]PWN--babyheap_0ctf_2017 附件 步骤: 例行检查,64位,保护全开 试运行一下程序,看到这个布局菜单,知道了这是一道堆的题目,第一次接触堆的小伙伴可以去看一下这个 ...

  10. [BUUCTF]REVERSE——[GWCTF 2019]pyre

    [GWCTF 2019]pyre 附件 步骤: 1.附件是pyc文件,用python打不开,百度后得知用python反编译工具打开,分享一个python反编译在线网站 反编译后是这段代码 #!/usr ...