面向过程&函数式
编程范式
编程范式,指的是编程的方式。更具体点是在解决实际问题时,解决问题的思路在编写代码风格上的的体现。
常见的编程范式:
- 面向过程:将解决问题的方式流程化,一步一步逐一解决;
- 函数式:只关注每个环节问题的结果,不关注流程细节;
- 面向对象:将解决问题角色化,不同的角色具有不同的功能,每个角色配合工作,解决问题。
每个编程范式都有优缺点,不存在高低贵贱之分;每个范式都有其擅长的领域。
面向过程:
- 优点:问题流程化,化繁为简,步步逼近;
- 缺点:代码臃肿,可扩展性差。
函数式:
- 优点:只关注结果
- 缺点:bug难找
面向对象:
- 优点:高度封装,可扩展性强
- 缺点:编码难度大
面向过程使用的场景
-
1、不是所有的软件都需要频繁更迭:比如编写脚本
-
2、即便是一个软件需要频繁更迭,也不并不代表这个软件所有的组成部分都需要一起更迭
函数式编程
函数式编程(Functional Programming)源自于数学理论,它似乎也更适用于数学计算相关的场景。
函数式编程并非用函数编程这么简单,而是将计算机的运算视为数学意义上的运算,比起面向过程,函数式更加注重的是执行结果而非执行的过程,代表语言有:Haskell、Erlang。而python并不是一门函数式编程语言,但是仍为我们提供了很多函数式编程好的特性,如lambda,map,reduce,filter
函数式编程常用的一些内置函数,几乎都支持迭代器机制,这也是map、reduce、filter、sum、max这些函数体现函数式编程思想的原因。
python3相比于python2,在内置函数上做了很大了,将很多内置函数支持了迭代器机制,这是非常棒的,它让python3可以更加优雅且高效的工作。