第五章---面向过程编程

编程范式(流派):   面向对象编程,面向过程编程 各有用处!!   编程:语法+数据结构(list dict)+算法(逻辑)

1.面向过程编程:核心是过程二字,过程指得是解决问题的步骤,相当于设计一条流水线,机械式的思维方式

优点:复杂的问题流程化,进而简单化
       缺点:可扩展性差
       运用场景:系统监控脚本,自动部署脚本之类的,eg:软件包解压安装(不再需要扩展了)就可以使用面向过程的思维编写代码



 1 ‘‘‘
 2 面向过程实例:用户登录注册
 3 第一步:用户输入用户名密码
 4 第二步:检查输入的合法性
 5 第三步:注册
 6 ‘‘‘
 7
 8 import json
 9 def interaction(): # 用户交互函数,用户用户输入用户名密码
10     name = input(‘name:‘).strip()
11     pwd = input(‘pwd:‘).strip()
12
13     return {‘name‘:name,
14              ‘pwd‘:pwd
15             }
16
17 def check(user_info): # 用户校验函数,用户校验用户名密码的合法性
18     is_legal = True
19
20     if len(user_info[‘name‘]) == 0:
21         print(‘用户姓名不能为空!‘)
22         is_legal = False
23
24     if len(user_info[‘pwd‘]) < 6:
25         print(‘用户密码不能少于6位!‘)
26         is_legal = False
27     return {‘is_legal‘:is_legal,
28              ‘user_info‘:user_info
29             }
30
31 def register(check_info): # 注册
32     if check_info[‘is_legal‘]:
33         with open(‘db.json‘,‘w‘,encoding=‘utf-8‘) as f:
34             json.dump(check_info[‘user_info‘],f)
35
36 def main():
37     user_info = interaction()
38     check_info = check(user_info)
39     register(check_info)
40
41 if __name__ == ‘__main__‘:
42     main()
2.面向对象:核心就是对象二字,对象就是特征与技能的结合体

优点:可扩展性强  缺点:编程复杂度高  应用场景:用户需求经常变化,互联网应用,游戏,企业内部应用

类就是一系列对象相似的特征与技能的结合体强调:站在不同的角度,得到的分类是不一样的

在现实世界中:一定是先有对象,后又类在程序中:一定先定义类,后调用类产生对象
站在路飞学院的角度,大家都是学生

在现实世界中:    对象1:mm        特征:            学校=‘luffycity‘            名字=‘mm‘            性别=‘女‘            年龄=18        技能:            学习            吃饭            睡觉

对象2:mumu        特征:            学校=‘luffycity‘            名字=‘mumu‘            性别=‘男‘            年龄=1        技能:            学习            吃饭            睡觉

对象3:zz        特征:            学校=‘luffycity‘            名字=‘zz‘            性别=‘男‘            年龄=20        技能:            学习            吃饭            睡觉
总结现实中路飞学院的学生类:        相似的特征            学校=‘luffycity‘

相似的技能            学习            吃饭            睡觉
 1  1 # 先定义类:
 2  2 class LuffyStudengt:
 3  3     school = ‘luffycity‘
 4  4     def learn(self):
 5  5         print(‘is learning‘)
 6  6     def eat(self):
 7  7         print(‘is eating‘)
 8  8     def sleep(self):
 9  9         print(‘is sleepping‘)
10 10
11 11 # 后产生对象
12 12 stu1 = LuffyStudengt()  # 实例化

3.如何使用类:

先定义类:
   特征:变量 school
   技能:函数

类和函数的区别:定义函数只有调用函数名加()才执行定义类的时候类的内部代码都会执行
类的用途:1.操作它的属性 增删改查2.实例化 产生对象
 1 class LuffyStudengt:
 2     school = ‘luffycity‘  # 数据属性
 3
 4     def learn(self):      # 函数属性
 5         print(‘is learning‘)
 6     def eat(self):     # 函数属性
 7         print(‘is eating‘)
 8     def sleep(self):    # 函数属性
 9         print(‘is sleepping‘)
10
11 # 查看类的名称空间
12 print(LuffyStudengt.__dict__)
13 print(LuffyStudengt.__dict__[‘school‘])
14
15 # 查:
16 print(LuffyStudengt.school) # == print(LuffyStudengt.__dict__[‘school‘])
17
18 # 增:
19 LuffyStudengt.country = ‘China‘
20 print(LuffyStudengt.__dict__)
21
22 # 删
23 del LuffyStudengt.country
24 print(LuffyStudengt.__dict__)
25
26 # 改
27 LuffyStudengt.school = ‘Luffycity‘
28 print(LuffyStudengt.__dict__)

4.__init__方法:

__init__方法用来为对象定制对象自己独有的特征

__init__实例化对象时会自动调
 1 class LuffyStudengt:
 2     school = ‘luffycity‘
 3
 4     # stu1,‘mm‘,‘女‘,18
 5     def __init__(self,name,sex,age):
 6         self.Name = name
 7         self.Sex = sex
 8         self.Age = age
 9
10     def learn(self):
11         print(‘is learning‘)
12     def eat(self):
13         print(‘is eating‘)
14     def sleep(self):
15         print(‘is sleepping‘)
16
17 # 后产生对象
18 stu1 = LuffyStudengt(‘mm‘,‘女‘,18)  # 实例化
19
20 # 加上__init__方法后实例化的步骤
21 # 1.先产生一个空对象stu1
22 # 2.LuffyStudent.__init__(stu1,‘mm‘,‘女‘,18)
23
24 # 查
25 print(stu1.__dict__)
26 print(stu1.Name)
27
28 # 改:
29 stu1.Name = ‘梦梦‘
30 print(stu1.__dict__)
31 print(stu1.Name)
32
33 # 删除:
34 del stu1.Name
35 print(stu1.__dict__)
36
37 # 增:
38 stu1.classname = ‘python全站开发‘
39 print(stu1.__dict__)
40
41 stu2=LuffyStudent(‘mumu‘,‘男‘,1) #Luffycity.__init__(stu2,‘mumu‘,‘男‘,1)
42 print(stu2.__dict__)
43 print(stu2.Name)

5.属性查找与绑定方法:

 1 class LuffyStudengt:
 2     school = ‘luffycity‘
 3
 4     # stu1,‘mm‘,‘女‘,18
 5     def __init__(self,name,sex,age):
 6         self.Name = name
 7         self.Sex = sex
 8         self.Age = age
 9
10     def learn(self):
11         print(‘%s is learning‘% self.Name)
12     def eat(self):
13         print(‘%s is eating‘% self.Name)
14     def sleep(self):
15         print(‘%s is sleepping‘% self.Name)
16
17 # 后产生对象
18 stu1 = LuffyStudengt(‘mm‘,‘女‘,18)  # 实例化
19 stu2 = LuffyStudengt(‘mumu‘,‘男‘,1)
20 stu3 = LuffyStudengt(‘zz‘,‘男‘,20)
21
22 # 对象:特征和技能的结合体
23 # 类:类是一系列对象相似的特征与相似的技能的结合体
24
25 # 类中的数据属性:是所有对象共有的
26 # print(stu1.school,id(stu1.school))
27 # print(stu2.school,id(stu2.school))
28 # print(stu3.school,id(stu3.school))
29 #
30 # # luffycity 6854800
31 # # luffycity 6854800
32 # # luffycity 6854800
33 # 类中的函数属性:是绑定给对象使用的,绑定到不同的对象是不同的绑定方法
34 # 对象调用绑定方法时,会把对象本身当做第一个参数传入,传给self
35 # print(LuffyStudengt.learn)
36 # LuffyStudengt.learn(stu1)
37
38 # print(stu1.learn)
39 # stu1.learn()
40 # print(stu2.learn)
41 # print(stu3.learn)
42
43 # 变量查找顺序:首先会在对象的名称空间中找,找不到在去类的名称空间找,然后去父类的名称空间找,还找不到就不会去全局找了
44 stu1.x = ‘from stu1‘
45 LuffyStudengt.x = ‘from LuffyStudent‘
46
47 print(stu1.x)
48 # from stu1
6.补充知识
1.站的角度不同,定义出的类是截然不同的;2.现实中的类并不完全等于程序中的类,比如现实中的公司类,在程序中有时需要拆分成部门类,业务类等;3.有时为了编程需求,程序中也可能会定义现实中不存在的类,比如策略类,现实中并不存在,但是在程序中却是一个很常见的类。

4.python 一切皆对象,在python3里统一了类与类型(list dict)的概念
 1 # print(type([1,2]))
 2 # print(list)
 3 class LuffyStudent:
 4     school = ‘luffycity‘
 5
 6     def __init__(self,name,sex,age):
 7         self.Name=name
 8         self.Sex=sex
 9         self.Age=age
10
11     def learn(self,x):
12         print(‘%s,%s is learning‘ % (self.Name,x))
13
14     def eat(self):
15         print(‘%s is eatting‘ % self.Name)
16 # print(LuffyStudent)
17
18 li1 = [1,2,3] # li = list(1,2,3) # list 对象
19 li1.append(4) # 对象在调自己的绑定方法 # list.append(li1,4)
20 # list.append(li1,4) # 类中的方法 是给 对象用的
21 print(li1)
7.可扩展性高
 1 class Chinese:
 2     country = ‘China‘
 3     def __init__(self,name,age,sex):
 4         self.name=name
 5         self.age=age
 6         self.sex=sex
 7     def eat(self):
 8         print(‘%s is eating‘ % self.name)
 9
10 p1 = Chinese(‘alice‘,19,‘女‘)
11 p2 = Chinese(‘alex‘,22,‘男‘)
12
13 print(p1.name,p1.country)
14 print(p2.name,p2.country)
15 p1.eat()
16 p2.eat()
 


原文地址:https://www.cnblogs.com/mumupa0824/p/8949747.html

时间: 2024-08-18 05:13:27

第五章---面向过程编程的相关文章

第十五章、并发编程之线程

目录 第十五章.并发编程之线程 1.什么是线程 2. 进程和线程的区别 3. 开启线程的两种方式 函数开启 类开启 4.子线程与子进程创建速度 5.子线程共享数据的证明 6.线程的join方法 单个子线程 多个子线程 思考 7.了解进程的join 8. 线程的其他相关用法 第十五章.并发编程之线程 1.什么是线程 纠正概念:进程其实不是个执行单位,进程是一个资源单位,每个进程内自带一个线程,线程才是cpu上的执行单位 抽象理解: 进程是指在系统中正在运行的一个应用程序:线程是系统分配处理器时间资

十三、面向过程编程

运用上次的 yiled 模拟 grep -rl 'root' /etc (递归找etc下所有文件并打开,过滤有'root'的文件) # import os # g = os.walk(r'C:\Users\56360\Desktop\city\mycity') # print(next(g)) # 拿到当前文件夹下的子目录和子文件 格式:('C:\Users\56360\Desktop\city\mycity',['src', 'static', 'test'],['index.html', '

day5-python之面向过程编程

一.面向过程编程 #1.首先强调:面向过程编程绝对不是用函数编程这么简单,面向过程是一种编程思路.思想,而编程思路是不依赖于具体的语言或语法的.言外之意是即使我们不依赖于函数,也可以基于面向过程的思想编写程序 #2.定义 面向过程的核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么 基于面向过程设计程序就好比在设计一条流水线,是一种机械式的思维方式 #3.优点:复杂的问题流程化,进而简单化 #4.缺点:可扩展性差,修改流水线的任意一个阶段,都会牵一发而动全身 #5.应用:扩展性要求不高

Spring详解(五)------面向切面编程

.AOP 什么? AOP(Aspect Oriented Programming),通常称为面向切面编程.它利用一种称为"横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect",即切面.所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性. 什么是切面,什么是公共模块,那么我们

Java基础-学习笔记(五)——面向过程和面向对象的区别

学习面向对象的语言,要弄清楚面向对象,首先要从理解面向过程开始. 回想起之前在学习C语言时,每次拿到一个题目,首先想到的是,先分析出解决问题所需要的步骤,每一个功能点,用一个函数来表示,使用的时候一个一个进行调用就好了,程序的重心在函数上(谓语):面向对象,就是要把问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述每个事物在整个解决问题过程中的行为,强调的是对象本身(主语) 还有就是数据是单独存储还是与操作存储在一起.对面向过程而言,数据是独立的.而在面向对象中,对象本身就

python 3 面向过程编程

python 3 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就像设计好一条工业流水线,是一种机械式的思维方式. 1.优点:程序结构清晰,可以把复杂的问题简单化,流程化. 2.缺点:可扩展性差,改动一个地方很可能要改多个地方,牵一发而动全身. 3.应用场景:linux内核,git,httpd,shell脚本. grep -rl 'error' /dir/ def init(func): def wrapper(*args,**kwargs): g=func(*a

如何从普通程序员晋升为架构师 面向过程编程OP和面向编程OO

引言 计算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用领域和方向的不同,产生了很多的分支,所以说编程并不是一件很困难的事情,一个高中生经过特定的训练就可以做得到.但是,会编程和编好程绝对是两码事,同样的程序员,有的人几年之后成为了架构师,有的人却还在不停地coding,只不过ctrl-c.ctrl-v用得更加纯熟了.在中国,编程人员最终的归途无外乎两条:一是转向技术管理,它的终点是CTO:二是继续深入,它的终点是首席架构师,成为CEO的人毕竟是少数.如

Python__面向过程编程

面向过程:核心是面向过程,过程即解决问题的步骤,基于面向过程去设计程序,就像是在设计流水线 #优点:程序结构清晰,可以把复杂的问题简单化,流程化#缺点:可扩展性差,一条流水线只是用来解决一个问题os模块功能展示: #Author wangmengzhu #装饰器 def init(func): def wrapper(*args,**kwargs): g = func(*args,**kwargs) next(g) return g return wrapper #第一阶段,找到所有文件的绝对路

Python 面向过程编程

一.解释 面向过程:核心是过程二字,过程即解决问题的步骤,基于面向过程去设计程序就像是在设计,流水线式的编程思想,在设计程序时,需要把整个流程设计出来, 一条工业流水线,是一种机械式的思维方式 二.优缺点 优点:程序体系结构清晰,可以把复杂的问题简单化,流程化 缺点:可扩展性差,一条流线只是用来解决一个问题,所以说面向过程的应用多为不需要经常变化的软件 应用场景:linux内核,git,httpd,shell脚本 三.实例(利用协程函数进行面向过程编程) 过滤一个文件下的子文件.字文件夹的内容中