Python - 函数式编程
一句话来简单地理解:函数式是一种编程范式,就是只用纯函数来编写程序。
特别说明:函数(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/
参考信息
行动是绝望的解药!
欢迎转载和引用,但请在明显处保留原文链接和原作者信息!
本博客内容多为个人工作与学习的记录,少数内容来自于网络并略有修改,已尽力标明原文链接和转载说明。如有冒犯,即刻删除!
以所舍,求所得,有所获,方所成。

浙公网安备 33010602011771号