面向过程和面向对象
面向过程编程
面向(对着)--> 过程(流程/步骤)--> 编程(码代码)
IPO
Input(输入)-->>Process(过程/处理)--> Output(输出)
未来码代码的目的:输入一些变量,然后会通过一些列步骤改变变量,然后得到想要的结果
def compare2(x, y):
if x > y:
return x
else:
return y
x = input('请输入一个数:')
y = input('请输入另一个数:')
res = compare2(x, y)
print(res)
面向过程编程:按特定的步骤,一个个函数,上一个函数的输出是下一个函数的输入
- 优点:代码的独立性提高了,流程清晰
- 缺点:一个错误,整个程序会崩掉
编程
控制变量不断地变化
怎么找bug
x = 10
y = 20
# 流程1
# 变量每变化一次,就打印一次
# 流程2
……
# 流程(方法有很多种) 需求的实现是多样化的,没有唯一解
- 定位bug,不一定就是那一行出错了
- 打印变量变化的状态,判断该流程是否有问题
面向对象编程
- 对象与对象之间交互
- 优点:一个对象的变化不会对其他对象产生影响
- 缺点:编程的复杂度远高于面向过程
类和对象
类:(模板/类别)划分了对象,具有相同属性和技能的对象属于同一类
在现实世界中:先有一个个具体存在的对象,然后随着人类文明的发展才了分类的概念,既然现实世界中有类这个概念,Python程序中也一定有类这个概念,但是在Python程序中:必须先定义类,然后调用类来产生对象。
python中的类
class Student(): # 定义了学生类
def __init__(self, name, age, height, weight):
self.age = age
self.name = name
self.height = height
self.weight = weight
def choose_course(self):
print(f'{self}正在选课')
cwz = Student('cwz', 18, 180, 140)
print(cwz.name)
print(cwz.age)
print(cwz.height)
print(cwz.weight)
定义类:
class Student():
'''注释:定义类'''
school = 'oldboy'
def choose_course(self):
print('正在选课')
定义对象
调用类即可产生对象,调用类的过程又称为类的实例化
class Student():
'''注释:定义类'''
school = 'oldboy'
def choose_course(self):
print('正在选课')
stu1=Student() # 实例化对象,stu1就是一个对象
print(stu1.school)
stu2 = Student()
stu2.choose_course()
# 对象使用类的方法,不需要加参数,因为实例化对象调用该方法时,python会自动将该实例化对象传给self
# 输出结果:
oldboy
正在选课
类中定义变量使用驼峰体
类定义阶段,会执行代码
定制对象独有特征
class Student():
'''注释:定义类'''
school = 'oldboy'
def choose_course(self):
print(self)
print('正在选课')
def init(obj, name, height, weight):
obj.name = name
obj.weight = weight
obj.height = height
stu2 = Student()
init(stu2, 'neo', 190, 180) # init是用来给对象添加独有特征的函数
print(stu2.name)
定义__init__
方法
class Student():
def __init__(self, name, age, height, weight):
self.age = age
self.name = name
self.height = height
self.weight = weight
def choose_course(self):
print(f'{self.name}正在选课')
neo = Student('neo', 18, 180, 140)
print(neo.name)
print(neo.age)
print(neo.height)
print(neo.weight)
neo.choose_course()
python中一切皆对象,一切皆数据类型
作为对象:
- 引用 x = 10 y = x
- 作为容器类元素 lt = [x, func, Student]
- 作为函数参数 def func(x, func, Student)
- 作为函数返回值 return x, func, Studnet