Python系列 57 编程范式

编程范式

编程范式只是一种程序设计思维,本身并无优劣之分。

与任何语言都无关,不要觉得面向对象就一定比面向过程好,实际上恰恰相反。

面向过程才是所有代码在内存中最终的状态。

面向过程

面向过程(OPP)编程思想的重点是将注意力放在事物本身上,更多的是关心下一步操作该怎么做,以正在发生为目的。

将1个大的问题逐步拆解成多个小问题,一旦问题解决后代码上线将很少有改动的场景。

  • 特性:模块化、流程化
  • 优点:代码可读性高,并且性能高
  • 缺点:不利于维护与扩展

著名的以面向过程思想为指导的设计产品有Linux内核,git等软件。

可以说如果一个项目是按照面向过程思维进行开发,它应该是从小的细节一步一步实现,最终变为一个整体。

面向对象

面向对象(OOP)编程思想是目前主流的编程思想,它在对业务的分析上更加侧重于应当由谁来完成这份工作,将注意力放在了人的上面,而并非事物本身。

  • 特性:抽象、封装、继承、多态
  • 优点:易于维护、易于扩展
  • 缺点:继承使得代码耦合度提高,并且性能较于面向过程来说略有损失

面向对象的本质就是整合,将具有某一共同特性的不同功能整合到一起进行分类。

如果一个项目是按照面向对象思维进行开发,它应该是先构建整体大局观,然后进行细节的丰富,而细节的丰富又最终回到了面向过程的思维上,因此面向对象和面向过程是不可分离的。

面向切面

面向切面(AOP)编程思想是面向对象的一种衍生。它旨在与将主逻辑业务和副逻辑业务进行切分,让彼此之间最大限度的降低耦合度。

此外,面向切面也能够在不损失已有功能的前提下,植入一个新的功能。

如Python装饰器函数,就是面向切面编程思想的最好体现。

  • 特性:分离,低耦合,高内聚
  • 优点:对扩展及其友好,因为各部都是分离的所以新功能添加上不会有太多的问题产生
  • 缺点:如果设计过于混乱,则会让代码可读性降低,如一味使用装饰器来进行缝补,还不如重构整个项目

面向接口

面向接口(PO)编程思想是近些年来逐渐火热起来的一种编程思想,它将抽象与实现互相抽离,先定义接口规范,后进行逻辑实现。

面向接口与面向对象相结合,能够让项目更加健壮,并且可读性扩展性都会得到一定程度的提升。

  • 特性:现实与抽象分离,抽象定义规范,现实指定逻辑
  • 优点:具有良好的扩展性,增强代码可读性,便与后期维护
  • 缺点:大幅度增加代码量

函数式编程

函数式编程是与数学函数高度结合的编程方式,纯粹的函数式编程语言没有变量只有常量,代码重复率较低,且功能一旦完善就不会出错。

在函数中没有for循环,所有的for循环用递归实现,函数式编程的一个特点就是允许把函数本身作为参数传入另一个参数,还允许返回一个函数。

此外,Python中的lambda以及filter,map,reduce等等都是从一些函数式编程语言如haskell中提取出来的一些优秀且符合Python核心思想的好案例。

  • 特性:无变量,无for循环
  • 优点:代码重复率低
  • 缺点:程序易读性差

Python特性

Python本身是一门纯粹的面向对象语言,除此之外它也支持:

  • 面向切面:装饰器就是最好的面向切面实现
  • 面向接口:严格意义上来说Python并未提供真正完全的面向接口语法,但仍然可以实现
  • 函数式编程:lambda、filter、map等都是Python中拥有的函数式编程实现

一门优秀的语言总是融百家之长,Python当然也不例外。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值