python什么是面向对象程序设计_python面向对象:什么是面向对象程序设计

编程范式

编程即写程序or代码,具体是指程序猿用特定的语法+数据结构+算法编写代码,目的是用来告诉计算机如何执行任务。

如果把编程的过程比喻为练习武功,那么编程范式指的就是武林中的各种流派,而在编程的世界里最常见的两大流派就是:面向过程和面向对象

面向过程和面向对象在不同的场景下都各有优劣,谁好谁坏不能一概而论,下面就让我们来详细了解它们。

面向过程的程序设计

概念:

核心是“过程”二字,“过程”指的是解决问题的步骤,即先干什么再干什么。。。。,基于面向过程设计程序就好比设计一条流水线,是一种机械式的思维方式。若程序一开始是要着手解决一个大的问题,面向过程的基本设计思路就是把这个大的问题分解成很多个小问题或子过程,这些子过程在执行的过程中继续分解,直到小问题足够简单到可以在一个小步骤范围内解决。

优点是:

复杂的问题流程化,进而简单化(一个复杂的问题,分成一个个小的步骤去实现,实现小的步骤将会非常简单)

举个典型的面向过程的例子,写一个注册程序,分三步,输入用户名,密码,验证,写入数据库。

import json

import re

def interactive():

name=input(‘>>: ‘).strip()

pwd=input(‘>>: ‘).strip()

return {

‘name‘:name,

‘pwd‘:pwd,

}

def check(user_info):

is_valid=True

if len(user_info[‘name‘]) == 0:

print(‘用户名不能为空‘)

is_valid=False

if len(user_info[‘pwd‘]) < 6:

print(‘密码不能少于6位‘)

is_valid=False

return {

‘is_valid‘:is_valid,

‘user_info‘:user_info

}

def register(check_info):

if check_info[‘is_valid‘]:

with open(‘db.json‘,‘w‘,encoding=‘utf-8‘) as f:

json.dump(check_info[‘user_info‘],f)

def main():

user_info=interactive()

check_info=check(user_info)

register(check_info)

if __name__ == ‘__main__‘:

main()

缺点是:

一套流水线或者流程就是用来解决一个问题,比如生产汽水的流水线无法生产汽车,即便是能,也得是大改,改一个组件,与其相关的组件都需要修改,牵一发而动全身,扩展性极差。

比如我们要加一个邮箱验证功能,那么和邮箱相关的代码都要改,代码如下:

import json

import re

def interactive():

name=input(‘>>: ‘).strip()

pwd=input(‘>>: ‘).strip()

email=input(‘>> ‘).strip()

return {

‘name‘:name,

‘pwd‘:pwd,

‘email‘:email

}

def check(user_info):

is_valid=True

if len(user_info[‘name‘]) == 0:

print(‘用户名不能为空‘)

is_valid=False

if len(user_info[‘pwd‘]) < 6:

print(‘密码不能少于6位‘)

is_valid=False

if not re.search(r‘@.*?\.com$‘,user_info[‘email‘]):

print(‘邮箱格式不合法‘)

is_valid=False

return {

‘is_valid‘:is_valid,

‘user_info‘:user_info

}

def register(check_info):

if check_info[‘is_valid‘]:

with open(‘db.json‘,‘w‘,encoding=‘utf-8‘) as f:

json.dump(check_info[‘user_info‘],f)

def main():

user_info=interactive()

check_info=check(user_info)

register(check_info)

if __name__ == ‘__main__‘:

main()

应用场景:

面向过程的程序设计思想一般用于那些功能一旦实现之后就很少需要改变的场景, 如果你只是写一些简单的脚本,去做一些一次性任务,用面向过程的方式是极好的,著名的例子有Linux內核,git,以及Apache HTTP Server等。但如果你要处理的任务是复杂的,且需要不断迭代和维护 的, 那还是用面向对象最方便了。

面向对象的程序设计

概念:

核心是“对象”二字,对象是特征与技能的结合体。

优点是:

可扩展性强

20180602233456309839.png

缺点是:

编程复杂度高

应用场景:

用户需求经常变化,互联网应用,游戏,企业内部应用

原文:https://www.cnblogs.com/mike-liu/p/9125966.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值