Python - 函数式编程
2023-09-14 09:00:40 时间
一句话来简单地理解:函数式是一种编程范式,就是只用纯函数来编写程序。
特别说明:函数(function)不等于函数式(functional)。
定义
Functional programming:https://en.wikipedia.org/wiki/Functional_programming
In computer science, functional programming is a programming paradigm—a style of building the structure and elements of computer programs—that treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data.
一些概念
- 纯函数(Prue Function):没有副作用的函数,也称为函数的纯粹性(Purity)。副作用是指状态的变化(mutation),例如:修改全局变量、抛出异常、IO读写、调用有副作用的函数等
- 引用透明(Referential Transparency):对相同的输入,总是得到相同的输出。如果f(x)的参数x和函数体都是引用透明的,那么函数f是纯函数。
- 不变性(Immutability):为了获得引用透明性,任何值都不能变化
- 函数是一等公民(First-class Function):一切都是计算,函数式编程中只有表达式,变量和函数都是表达式。
- 高阶函数(Higher order Function):可以作为其他函数的输入或输出的函数
- 闭包(Closure):代码与用到的非局部变量的混合,即:闭包 = 代码 + 用到的非局部变量
- 表达式求职策略:严格求值(例如Call By Value)和非严格求值(Call By Name)
- 惰性求值(Lazy Evaluation):定义表达式时不会立刻求值,只有当第一次调用时才会去求值。
- 递归函数(Recursive Function):递归实现循环,为避免性能问题可以使用尾递归(Tail Recursion)
函数式编程的优点
- 生产效率高:代码量简洁
- 易于推理(Reasoning):固定的输入必然导致规定的输出,调试方便
- 适用于并行编程、多核计算、云计算:具备引用透明性
Python中的函数式编程
- Functional Programming HOWTO:https://docs.python.org/3/howto/functional.html
- Python函数式编程 - 从入门到走火入魔:http://python.jobbole.com/86950/
参考信息
相关文章
- Python之——python-nmap的安装与常用方法说明
- Spark系列:Python版Spark编程指南
- Python学习--08函数式编程
- Python装饰器与面向切面编程(转)
- 【python】函数式编程
- Python 进阶(一)函数式编程
- Python编程系列---初始Python编程基础
- Python:利用python代码编程实现将视频的avi格式转换为MP4格式
- Python:利用python编程将上海十六区,2020年5月份房价实时地图(数据来源房天下)进行柱状图、热图可视化
- Python编程小技巧:遍历py文件自动去掉所有注释仅剩代码函数(有部分可能导致函数代码顺序错乱)
- Python语言学习:Python语言学习之GUI图形用户界面编程(tkinter/wxPython/PyGTK/PySide/Kivy/easygui/PyQt等)的简介、案例应用之详细攻略
- Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件
- Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能
- Python:利用python代码编程实现将视频的avi格式转换为MP4格式
- Python编程专属骚技巧5
- Python编程专属骚技巧10
- Python学习87:网络编程
- Python学习26:函数式编程
- C++调用C++项目中的Python脚本中的函数和类。,在,工程,python
- Python编程:re正则库及其常用函数整理
- Python编程:Built-in Functions内建函数小结
- Python编程:关于函数
- python编程:迭代对象、Iterator迭代器、生成器
- Python编程:Coroutine协程之生产者消费者模型
- Python编程:使用pydoc生成文档注释
- Python编程:time模块实现函数执行时间计时器
- Python编程:将驼峰命名转为小写下划线命名
- python并发编程&多进程(二)
- Python学习笔记(十一)—— 函数式编程
- Python函数式编程