python函数式编程
函数式编程关心数据的映射,命令式编程关心解决问题的步骤。就是比较适用于数据运算和处理的一些场景,函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。函数编程其实只有一个核心特征:有效排除函数副作用(Side-effect),即用纯函数[3]。排除函数副作用的函数也叫做纯函数(Pure Function)。那么什么是Side-effect呢?就是影响除了这个函数本身以外的任何东西。比如,如果一个函数修改了全局变量,那么它不是纯函数;如果一个函数包含了IO操作,如读取数据库,他不是纯函数;如果一个函数包括生成随机数,他不是纯函数,因为每次调用函数都会返回不同的数值。
纯函数有两个主要的优势:
无状态。线程安全。不需要线程同步。(还记得并行的优势吗?惰性也跟这个密不可分)
纯函数进行组装后,仍然是纯函数。(是不是想到了高阶函数?)
因为有了纯函数,在函数编程中,表达式(expression)和值(Value)才可以互换。