一、面向过程

  1、面向过程核心是过程二字,过程指的是解决问题的步骤,好比如设计一条流水线,是一种机械式的思维方式。

     就是程序从上到下一步步执行,一步步从上到下,从头到尾的解决问题 。基本设计思路就是程序一开始是要着手解决一个大的问题,然后把一个大问题分解成很多个小问题或子过程,这些子过程再执行的过程再继续分解直到小问题足够简单到可以在一个小步骤范围内解决。

  2、优缺点

       优点:将复杂的问题流程化,进而简单化。

       缺点:扩展性差

  3、实例:面向过程式的登录注册程序  

import json,re
def login():
'''
用户输入
:return:
'''
usename = input('用户名:').strip()
pwd = input('密码:').strip()
tel = input('电话:').strip()
mail = input('邮箱:').strip()
return {
'usename':usename,
'pwd':pwd,
'tel':tel,
'mail':mail }
def authentication(use_info):
'''
判断用户名和密码等信息是否合法
:return:
'''
is_valid = True # 默认合法
if len(use_info['usename'])==0:
print('用户名不能为空!')
is_valid = False
if len(use_info['pwd'])< 6:
print('密码长度不得小于6位!')
is_valid = False
if len(re.findall('1[0-9]{10}',use_info['tel']))==0:
print('电话格式不对!')
is_valid = False
if not re.search(r'@.*?.com$',use_info['mail']).group(): # 使用Python的r前缀,就不用考虑转义的问题,'*'加个?就可以让'.'采用非贪婪匹配
print('邮箱格式不对')
is_valid = False return {
'valid':is_valid,
'info':use_info
}
def register(auth):
'''
若输入信息合法则注册,写入文件或数据库
:param auth:
:return:
'''
if auth['valid']==True:
with open('data.json','w',encoding='utf-8') as f:
json.dump(auth['info'],f)
def main():
'''
主逻辑程序
:return:
'''
use_info = login()
auth = authentication(use_info)
register(auth)
if __name__=='__main__': # 直接调用时执行下列程序,被调用时不执行
main()

  注意:一般认为, 如果你只是写一些简单的脚本,去做一些一次性任务,用面向过程的方式是极好的,但如果你要处理的任务是复杂的,且需要不断迭代和维护 的, 那还是用面向对象最方便。

二、面向对象

  1、面向对象:核心是对象二字,特征和技能的结合体。

  2、优缺点:

      优点:可扩展性高

      缺点:编程复杂度高

  3、应用场景:用户需求经常变化,互联网应用,游戏,企业内应用等。

  4、关于面向对象的几个名词解释   

    类:一个类即是对一系列对象相似的特征和技能的结合体,如同一个模板。在类中定义了这些对象的都具备的属性,共同的方法。

    属性:人类包含很多特征,把这些特征用程序来描述的话,叫做属性,比如年龄、身高、性别、姓名等都叫做属性,一个类中,可以有多个属性。

    方法:人类不止有身高、年龄、性别这些属性,还能做好多事情,比如说话、走路、吃饭等,相比较于属性是名词,说话、走路是动词,这些动词用程序来描述就叫做方法。

    实例(对象):一个对象即是一个类的实例化后的实例,一个类必须经过实例化后方可在程序中调用,一个类可以实例化多个对象,每个对象亦可以有不同的属性,就像人类是指所有人,每个人是指具体的对象,人与人之前有共性,亦有不同。

    实例化:把一个类转变为一个对象的过程就叫实例化。

  5、简单实例

# 现实世界中的对象:
'''
对象1
特征
职业:学生
姓名:王二
性别:男
年龄:22
技能
学习
打游戏
对象2
特征
职业:学生
姓名:张三
性别:男
年龄:20
技能
学习
打游戏
看书
对象3
特征
职业:学生
姓名:婉婉
性别:女
年龄:18
技能
学习
打游戏
看书
现实中的类:
特征:
职业:学生
技能:
学习
打游戏
看书
在程序中:
'''
# 先有类
class School_learn:
job = 'student'
def study(self):
print('study hard!')
def play_game(self):
print('play games as little as you can')
def read(self):
print('read books more and more') # 再调用类产生对象
student1 = School_learn()
student2 = School_learn()
student3 = School_learn()
print(student1) # <__main__.School_learn object at 0x000002B70F8D7588> 对象
print(student2)
print(student3)

  6、面向对象三大特性

    <1>封装(Encapsulation):在类中对数据的赋值、内部调用对外部用户来说是透明不可见的,这使类变成了一个胶囊或容器,里面包含着类的数据和方法。

    <2>继承(Inheritance):一个类可以派生出子类,在这个父类里定义的属性、方法自动被子类继承。

    <3>多态(Polymorphism):多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,指一个基类中派生出了不同的子类,且每个子类在继承了同样的方法名的同时又对父类的方法做了不同的实现,这就是同一种事物表现出的多种形态。

注意:这里只是简单说明下几大特性,后续我们会深入探讨的的。

  

  
 
 

Python之面向过程和面向对象的区别的更多相关文章

  1. Net基础篇_学习笔记_第十一天_面向对象(面向过程与面向对象的区别/类的概念)

    1.面向过程-----> 面向对象 面向过程:面向的是完成这件事儿的过程,强调的是完成这件事儿的动作. 把大象塞进冰箱里1.打开冰箱门2.把大象塞进去,亲下大象的屁股3.关闭冰箱门 孙全 瘦小 ...

  2. essential C++中关于面向过程和面向对象的说明

    昨天在阅读essential C++中看到了一个关于面向过程和面向对象的区别的例子,感觉挺好的.记录下来.... 这个例子是关于照相机的.照相机有三个性质,一个是控制位置:通常使用3个浮点数据来表示其 ...

  3. python 面向过程和面向对象比较

    面向过程 VS 面向对象 面向过程的程序设计:核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么......面向过程的设计就好比精心设计好一条流水线,是一种机械式的思维方式. 优点是:复杂度 ...

  4. python基础(23):面向过程与面向对象的优劣、初识面向对象

    1. 面向过程与面向对象的优劣 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程 ...

  5. 面向过程 vs 面向对象

    从网上摘录了一些面向过程vs.面向对象的分析,先简单记录如下,稍后会继续整理. 为什么会出现面向对象分析方法? 因为现实世界太复杂多变,面向过程的分析方法无法实现. 面向过程 采用面向过程必须了解整个 ...

  6. JS是面向过程、面向对象还是基于对象?面向对象的代码体现

    一.问题 javascript是面向对象的,还是面向过程的?基于对象是什么意思? 对象: 指的是对某一类事物进行抽象,抽象出这一类事物共同的特征以及行为(也就是属性和方法),那些拥有这一共同属性和方法 ...

  7. PHP面向过程和面向对象

    php程序编写分为面向过程和面向对象.两者在功能实现上没有区别,但是在代码编写上区别很大,面向过程的代码很乱,不易管理,而面向对象把常用的功能封装为一个类,这样代码清楚多了. 下面举个小例子说明一下: ...

  8. C语言学习系列(二)面向过程和面向对象

    一.基本定义 (一).面向过程(procedure oriented programming POP) 面向过程是分析解决问题的步骤,然后用函数把这些步骤一步一步的实现,然后在使用的时候一一调用则可. ...

  9. PHP mysqli扩展整理,包括面向过程和面向对象的比较\事务控制\批量执行\预处理

    相关文章:PHP的mysql扩展整理,操作数据库的实现过程分析  PHP PDO扩展整理,包括环境配置\基本增删改查\事务\预处理 介绍 mysqli是PHP程序与mysql数据库进行数据交互的桥梁, ...

随机推荐

  1. L138 Cryptocurrency Exchanges at Risk of Manipulation

    Several cryptocurrency exchanges are plagued by poor market surveillance, pervasive conflicts of int ...

  2. 软件测试 Record

    fxcopnunit软件质量 EDW 数据仓库ETL KPI 敏捷 测试计划 单元测试 集成测试 系统测试 对测试结果 阶段性 分析 总结 测试结果报告 环境问题:软硬件用户有问题,我们这边没有有效问 ...

  3. shfileoperation 删除文件 FileDelete(CString strName)

    From:http://blog.csdn.net/lvwx369/article/details/41440883 注意:其中namePath 为全局变量 Cstring namePath; BOO ...

  4. linux 下看所有用户 及所有组

    俺的centos vps上面不知道添加了多少个账户,今天想清理一下,但是以前还未查看过linux用户列表,google了一下,找到方便的放:一般情况下是 cat /etc/passwd 可以查看所有用 ...

  5. HDU - 6129 :Just do it (杨辉三角)

    There is a nonnegative integer sequence a 1...n  a1...n of length n n . HazelFan wants to do a type ...

  6. ExpressionTree,Emit,反射

    ExpressionTree,Emit,反射 https://www.cnblogs.com/7tiny/p/9861166.html [前言] 前几日心血来潮想研究着做一个Spring框架,自然地就 ...

  7. HTML服务器控件与Web服务器控件

    asp.net之所以现在开发方便和快捷,关键是它有一组强大的控件库,包括web服务器控件,web用户控件,web自定义控件,html服务器控件和html控件等.这里主要整理一下html控件.html服 ...

  8. openfaas 了解

    1. 官方介绍 OpenFaaS (Functions as a Service) is a framework for building serverless functions with Dock ...

  9. Oracle配置文件tnsnames.ora新增链接后连接报错:ORA-12154: TNS:无法解析指定的标识符

    一个空格引发的血案:在tnsnames. ora文件中新加了一个配置,该配置估计当时是拷的别人的直接粘贴上去的,然后发现用pl/sql连接就一直报错了,后面排除了用户名和密码问题和后,仔细看了该文件才 ...

  10. CodeReview是开发中的重要一个环节,整理了一些关于jupiter for java

    什么是代码评审(CodeReview)? 代码评审也称代码复查,是指通过阅读代码来检查源代码与编码标准的符合性以及代码质量的活动. Jupiter提供了代码行级别的评审批注功能,方便评审参与人了解具体 ...