面向程序设计
面向过程 编程:面向(对着)--》过程(流程步骤)--》编程(码代码)
IPO
input(输入)--》process(过程处理)--》output(输出)
面向过程编程
一步一步(一个一个函数),上一个函数 输出是向下一个函数的输入
编程:控制变量不断的变化
优点:代码独立性提高了,流程清晰
缺点:一个错误就会让程序直接崩掉
debug的来源
1.定位bug,不一定是哪一行出错
2.打印变量变化的状态,盘点流程是否有问题
面向对象编程
面向(对着)object--》物体编程(码代码)
优点:对象的变化不会对其他对象造成影响
缺点:异常复杂
类和对象
类:
模板和类别划分了对象,通过具有相同属性特征的技能的对象属于同一类 #1000个对象,类小于1000种 # 现实世界中先有对象才会有类,但是python中现有类后有对象
对象:
一些列特征和技能(方法)的结合体
函数的定义阶段只检测语法,不换行
# 定义类
class Student:
def __init__(self, name, height, weight, age):
self.name = name
self.height = height
self.weight = weight
self.age = age
def choose_course(self):
print(f'{self.name}正在选课')
# 定义对象
yutong = Student('雨桐', 150, 170, 16)
print(yutong.name)
print(yutong.height)
print(yutong.weight)
print(yutong.age)
yutong.choose_course()
dapao = Student('大炮', 100, 300, 18)
print(dapao.name)
print(dapao.height)
print(dapao.weight)
print(dapao.age)
dapao1 = Student('大炮', 100, 300, 18)
print(dapao1.name)
print(dapao1.height)
print(dapao1.weight)
print(dapao1.age)
# 如果该对象属于这个类,那么类拥有的,对象一定拥有
定义类语法:
'''
class 类名(驼峰体):
school = 'oldboy' # 定义变量(给类添加属性)
def choose_course(self): # 定义在类内部的函数一般称为方法(给类增加技能)
pass
'''
定制对象的独有特征
class Student():
school = 'oldboy'
def __init__(self, name, height, weight):
print(self)
self.name = name # self = stu1 --> stu1.name = 'dapao'
self.height = height
self.weight = weight
def choose_course(self):
print('正在选课')
stu1 = Student('yutong', 170, 140)
print('stu1:', stu1)
print('stu1.name:', stu1.name)
stu2 = Student('dapao', 100, 300)
print('stu2.name:', stu2.name)
print('stu2:', stu2)
自动排序
def sort(lis):
print(1, lis)
for i in range(len(lis)): # 3
for j in range(len(lis)): # 3 # 2
if lis[i] < lis[j]:
lis[i], lis[j] = lis[j], lis[i]
print(2, lis)
lis = [3, 2, 1]
sort(lis)