001---面向对象和面向过程的区别
面向对象和面向过程的区别
-
面向过程
- 概念:核心是'过程',指解决问题的步骤。先干什么再干什么,基于面向过程设计程序就好比在设计一条流水线,是一种机械式的思维方式。
- 优点:复杂的问题流程化,进而简单化。
- 缺点:可扩展性差。中间某个环节出了问题,影响全局,牵一发而动全身。
- 应用场景:适用于一旦实现功能就很少改动的场景。比如:简单的脚步和一些一次性任务、Linux内核、git、Apache HTTP Server等。
- 代码示例:
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) if __name__ == '__main__': user_info = interactive() check_info = check(user_info) register(check_info)
-
面向对象
- 概念:核心是'对象',站在上帝的角度,万物皆对象。把我们人类当作类,每个人就是一个对象,每个对象都有姓名、年龄、身高和体重等特征。每个对象都有走路、睡觉、说话等行为,总结来说:对象是特征和技能的结合体。
- 优点:可扩展性强
- 缺点:编程复杂度高
- 应用场景:代码量多,功能多,改动大,需不断迭代和维护的软件中。比如:复杂的电商程序、企业内部的管理系统、游戏等。
- 代码示例:
class LuffyStudents: school = 'Luffy' def learn(self): print('学习') def eat(self): print('吃东西') def sleep(self): print('睡觉') # 实例化了三个学生对象 s1 = LuffyStudents() s2 = LuffyStudents() s3 = LuffyStudents() print(s1,s1.school) print(s2) print(s3)