Python学习笔记二(函数、类与对象)

Python学习笔记二

函数

  • 定义与调用
python 复制代码
def 函数名(参数列表):
    # 函数体:执行的具体代码
    # ...
    return 返回值

def greet(name): # 定义一个打招呼的函数
    """向指定的人打招呼"""
    print(f"Hello, {name}!")

# 调用函数(必须调用才会执行)
greet("Alice")  # 输出: Hello, Alice!
greet("Bob")    # 输出: Hello, Bob!

def compute(x, y):
    return x + y, x - y  # 可以返回两个值

sum_val, diff_val = compute(10, 4)
print(sum_val)  # 14
print(diff_val) # 6

类与对象

类定义了这类事物"有什么"(属性)和"能做什么"(方法)

在类中定义的函数叫做方法

类是一个概念、一个分类,比如"汽车"这个分类,它定义了所有汽车共有的特征(比如颜色、品牌、有车轮)和行为(能启动、能刹车)

对象是根据类这个蓝图创造出来的具体实例

类 = 一张"汽车设计图纸"(本身不能开,但规定了汽车的构造)

对象 = 根据图纸生产出来的一辆辆具体的汽车

  • 定义类:类中最特殊且最重要的方法是 init,它被称为初始化方法(或构造函数)。当你创建一个新对象时,Python 会自动调用这个方法,用来给对象"初始化"属性
  • 理解 self:self 代表"对象自己",在类的方法中,第一个参数必须是 self。
    它的作用是告诉 Python:"我要操作的是当前这个对象的属性,而不是别的对象的。"
python 复制代码
class Student: # 学生类,描述学生的基本信息
	school = "Python大学"
	def _init_(self,name,age):
		self.name = name
		self.age = age
	
	def introduce(self):
		return "大家好,我叫{self.name},今年{self.age},来自{Student.school}。"

# 创建对象,实例化
stu1 = Student("小明",18)
stu2 = Student("小红",19)

print(stu1.name)
print(Student.school)

print(stu1.introduce()) # 调用对象的方法
print(stu2.introduce())

school是类属性,所有该类的对象共享同一个类属性,修改后所有对象的值都会改变

实例属性(在_init_方法中),以self开头,属于具体的对象

  • 特性:
    1、封装:把数据(属性)和操作数据的方法"打包"在一起,对外隐藏内部细节
    2、继承:子类可以继承父类的属性和方法,实现代码复用
    例如定义一个通用的 User 类(有名字、电话),然后创建 Student 类和 Teacher 类继承它。学生和老师都有名字和电话,不需要重复写代码。
    3、多态:不同的对象,可以用相同的方式调用。
    例如Student 和 Teacher 都有一个 speak() 方法。当你调用 person.speak() 时,学生说"老师好",老师说"上课了",虽然方法名一样,但表现不同。
相关推荐
dadaobusi1 小时前
学习:RV lkvm SBI
java·学习·spring
传奇开心果编程3 小时前
【Xilem 0.4 基础语法学与练】第一课:从零到计数器
学习·rust·前端框架
广州山泉婚姻3 小时前
Python序列号源码分析
python
计算机源码社4 小时前
【大数据项目实战】基于大数据的影视内容生态综合质量分析与可视化-基于数据挖掘的影视内容类型共现与口碑聚类分析系统
大数据·人工智能·python·数据挖掘·数据分析·毕业设计·课程设计
C^h4 小时前
pytorch 适合初学者 0基础学习
人工智能·pytorch·python
David猪大卫4 小时前
【C++修炼】智能指针使用及原理
开发语言·c++·经验分享·笔记·学习·考研·面试
小柯南敲键盘4 小时前
跨马翻译:AI批量图片翻译工具,跨境电商视频字幕翻译与智能抠图一体搞定
人工智能·python·音视频
z23456d4 小时前
第四十一天学习心得
学习
2601_962297254 小时前
Python里behave和pytest-bdd哪个更适合中大型项目?为什么?
python·bdd·行为驱动开发·behave·pytest-bdd
sunflower#5 小时前
Go学习第五阶段:接口、泛型与包设计,实现可替换的通讯录存储层
学习·oracle·golang