Python学习札记(二十) 函数式编程1 介绍 高阶函数介绍
参考:
函数式编程
高阶函数
Note
A.函数式编程(Functional Programming)介绍
1.函数是Python内建支持的一种封装,我们通过一层一层的函数调用把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。这一点和C语言是一致的。
2.计算机和计算的概念:
a.在计算机的层次上,CPU执行的是加减乘除的指令代码,以及各种条件判断和跳转指令,所以,汇编语言是最贴近计算机的语言。
b.计算则指数学意义上的计算,越是抽象的计算,离计算机硬件越远。
因此对应到编程语言:越低级的语言,越贴近计算机,抽象程度低,执行效率高,比如C语言;越高级的语言,越贴近计算,抽象程度高,执行效率低,比如Lisp语言。
- 函数式编程就是一种抽象程度很高的编程范式;
- 纯粹的函数式编程语言编写的函数没有变量 => 任意一个函数,只要输入是确定的,输出就是确定的 => 我们称之为没有副作用。
- 而允许使用变量的程序设计语言 => 函数内部的变量状态不确定,同样的输入,可能得到不同的输出 => 这种函数是有副作用的。
3.函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数。
4.Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。
B.高阶函数 Higher-order function
1.变量可以指向函数:
#!/usr/bin/env python3a = abs(-10)print(a)b = absprint(b)
sh-3.2# ./intro.py
10
<built-in function abs>
结论:函数本身也可以赋值给变量,即:变量可以指向函数。
可以通过指向函数的变量来调用该函数:
print(b(-199))
199
说明现在变量b指向函数abs(),调用b()相当于调用abs()。
2.函数名是变量:函数名其实就是指向函数的变量。
例如,对于abs()这个方法,abs完全就是指向该函数的变量。但是如果将abs指向其他object,就无法再次调用abs原来指向的函数。
abs = 10print(abs)print(abs(-10))
10
Traceback (most recent call last):File "./intro.py", line 17, in <module>print(abs(-10))
TypeError: 'int' object is not callable
注:abs函数本身来自模块builtins,若要改动整个模块的abs指向,使用以下语句:
import builtinsbuiltins.abs = 10
3.传入函数:既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。
例如:一个简单的高阶函数
#!/usr/bin/env python3def addtwonums(a, b) :return a+bdef func(a, b, f) :return f(a, b)def main() :a = int(input())b = int(input())f = addtwonumsprint(func(a, b, f))if __name__ == '__main__':main()
sh-3.2# ./intro2.py
100
99
199
4.把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式。
2017/2/10
转载于:https://www.cnblogs.com/qq952693358/p/6386698.html
Python学习札记(二十) 函数式编程1 介绍 高阶函数介绍相关推荐
- Python学习札记(二十三) 函数式编程4 sorted
参考:sorted NOTE 1.sorted,快速排序,时间复杂度O(nlogn)渐进最优. #!/usr/bin/env python3L = []for i in range(10):L.app ...
- Python学习札记(二十八) 模块1
参考:模块 NOTE 1.模块:一个.py文件称为一个模块. 2.代码模块化的意义:a.提升程序的可维护性 b.不用重复造轮子 3.避免模块冲突,解决方法:引入了按目录来组织模块的方法,称为包(Pac ...
- Scala编程基础——集合高阶函数
Scala编程基础--集合&高阶函数 集合 Scala中集合分为可变集合和不可变集合 可变集合:可以修改.添加.移除一个集合的元素. 不可变集合:安全的并发访问. 不可变集合,相比之下,永远不 ...
- python函数式编程读取数据-python学习笔记9:函数式编程
函数式编程(FunctionalProgramming) 基于lambda演算的一种编程方式 程序中只有函数 函数可以作为参数,同样可以作为返回值 纯函数式编程语言: LISP, Haskell Py ...
- Kotlin 编程核心基石—高阶函数
前言 1. 高阶函数有多重要? 高阶函数,在 Kotlin 里有着举足轻重的地位.它是 Kotlin 函数式编程的基石,它是各种框架的关键元素,比如:协程,Jetpack Compose,Gradle ...
- python (第八章)补充-可迭代对象(补充高阶函数,以及常用的高阶函数)
文章目录 可迭代对象 迭代器 什么是迭代器 什么是生成器 生成器的作用 生成器的注意事项 总结: 高阶函数 什么是高阶函数? map()函数 filter()函数 reduce()函数 参考 可迭代对 ...
- Python学习笔记__4章 函数式编程
# 这是学习廖雪峰老师python教程的学习笔记 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程 ...
- Python学习日记(二十九) 网络编程
早期的计算机通信需要有一个中间件,A要给B传东西,A必须要把信息传给中间件,B再把从中间件中拿到信息 由于不同机器之间需要通信就产生了网络 软件开发的架构 1.C/S架构 服务器-客户机,即Clien ...
- Python学习札记(二) python3.5安装 + (假装是)第一个Python程序
参考: Mac OS 安装 Python3.5 廖雪峰Python教程:安装Python 笔记: 安装: 1.官方网站下载安装包:安装程序 2.执行安装程序完成Python3.5包的安装. 3.安装P ...
最新文章
- 使用 Java 开发 OpenCV 应用
- Shell脚本实战之文件批量创建和修改
- 论文浅尝 | Data Intelligence 已出版的知识图谱主题论文
- 干货!一文看Doris在作业帮实时数仓中的应用实践
- java画一个小车_小轿车简笔画怎么画
- 利用iisnode模块,让你的Node.js应用跑在Windows系统IIS中
- (音视频学习笔记):ffplay命令选项及使用案例
- 批量语音转文字python
- python爬虫--王者荣耀高清壁纸下载
- 2021年展望Android原生开发的现状,真香!
- 【火同学】OPencv学习笔记——滑动条的创建和使用
- golang map的遍历
- 解决导出CSV文件乱码的问题
- 这就是我英语 来自http://www.uuseenews.com.cn/
- eovs实训报告总结心得_实训心得10篇完美版
- 首师大附中互测题:99999999海岛帝国后传:算法大会【D001】
- Leetcode1-两数之和
- 30行Python代码实现自动收发邮件
- scrapy实践-02
- 英语写作短语100句
热门文章
- python爬虫简单实例-Python 利用Python编写简单网络爬虫实例3
- 在当当买了python怎么下载源代码-python爬虫爬取当当网
- python有道翻译-Python调用有道词典翻译
- python代码案例详解-新手必学Python爬虫之Scrapy框架案例详解
- python3.8.2汉化包-Python3.8.2中文版 32/64位 官方最新版
- python主要运用于-Python的8大主要应用领域,看看哪个是你的菜?
- python编写一个软件-python写一个随机点名软件的实例
- python工作好找吗-Python好找工作吗 不看会后悔
- python基本语法语句-python学习笔记:基本语法
- python中文叫什么意思-在python中%是什么意思