- 定义出一系列数据,定义出一些列功能,用功能操作数据实现人们想要的要求
针对问题/要实现的功能,先列出具体的解决步骤,再分布写具体内容 类似工厂的流水线,每一工序完成一个功能,前后是有逻辑关系的. 优点: 逻辑清晰,便于理解 缺陷: 后期要更改某块代码,那么会牵一发而动全身,很可能多个功能模块都做一定更改(扩展性较差)
实例
import json """ 1 面向过程编程 扩张性差案例 <用户注册系统> 以下都封装成函数 1 输入用户信息 2 校验信息(为示例方便:这里仅校验用户输入是否为空) 3 注册 4 三个函数再封成一个函数,到时候调用此函数就是执行注册 """ # 思考: 本例中函数返回值如何组织的及函数形参如恶化写的,为什么? # step1 def interinfo(): username = input('username>>>:').strip() password = input('password>>>:').strip() return {'username': username, 'password': password} # step2 def check_interfo(interinfo_return): is_register = True # # 写法1 # if len(interinfo_return.get('username')) == 0: # print('用户名不能为空') # is_register = False # if len(interinfo_return.get('password')) == 0: # print('密码不能为空') # is_register = False # 写法2 if len(interinfo_return.get('username')) != 0 and len(interinfo_return.get('password')) != 0: pass else: print('密码或用户名输入为空') is_register = False return {'is_register': is_register, 'interinfo_return': interinfo_return} # step3 def register(check_info_return): if check_info_return.get('is_register'): import json with open(r'a.txt', 'w', encoding='utf-8') as f: # 注意:a.txt 是相对路径 json.dump(check_info_return.get('interinfo_return'), f) # step4 def start(): interinfo_return = interinfo() check_info_return = check_interfo(interinfo_return) register(check_info_return) if __name__ == '__main__': start()
2面向对象编程 定义:基本思路 把程序用要用到的,相关联的数据和功能整合到对象里边去,然后去使用 3 类与对象
- 定义:
- 对象: 存放数据与功能的容器
- 将原本分散的相关数据和功能整合到对象里
- 类: 存放多个对象相同数据和功能的容器
- 类的意义:节省空间,减少代码冗余的机制,面向对象编程核心使用对象
- 详细理解
# # 1 定义一个类 # class Student(): # 类名:驼峰体 # school = 'sh' # 'school': 'bj' # # def __init__(self, name, age, course): # self.name = name # self.age = age # self.course = [] # # return 在类中不能有函数返回值 # def choose_course(self, course): # self.course.append(course) # print('%s选课%s' % (self.name, self.course)) """ 2 产生对象/实例化 定义:调用类的过程就是实例化 格式: 要产生的对象名 = 类名(属性名) """ # stu1 = Student('jack', 23, 'art') # 每实例化一次Student,就得到一个学生对象 # stu2 = Student() """ 3 (增加/更改/删除)对象属性(增改删类属性方法一样) 格式 增: 简写: 对象名.新属性名 = 属性值 # 等价于 >: 对象名句点符双下dict = 属性值 改: 简写: 对象名.属性名 = 新属性值 # 等价于 >: 对象名句点符双下dict = 新属性值 删除格式: del 对象名.属性名 """ # 改 # stu1.name = 'tom' # stu1.__dict__['name'] = 'tom' # 增 # stu1.hobby = 'run' # stu1.__dict__['name'] = 'tom' # print(stu1.__dict__.get('hobby')) # run # 删 # del stu1.hobby # print(stu1.__dict__.get('hobby')) """ 4 如何查看对象属性<对象内部数据是用字典组织的> 格式: 1: print(对象名.属性名) 2: 用字典取值方法 >: print(对象名.__dict__.get('属性名')) """ # print(stu1.name) # print(stu1.__dict__) # print(stu1.__dict__.get('name')) """ 5 对象,类 调用类中数据和函数属性 """ # 1 调用数据属性 # print(stu1.school) # print(Student.school) # 2 调用函数属性 # stu1.choose_course('art') # Student.choose_course(stu1, 'art')