🐍 Python 学习笔记(二)

承接上篇基础内容,本篇聚焦面向对象编程、常用模块进阶及实战技巧,助力从基础迈向应用。


👥 1. 面向对象编程(OOP)

🏗️ 类与对象

1
2
3
4
5
6
7
8
9
10
11
12
# 定义类
class Dog:
def __init__(self, name, age): # 构造方法
self.name = name # 实例属性
self.age = age

def bark(self): # 实例方法
return f"{self.name} 汪汪叫,年龄 {self.age} 岁"

# 创建对象
my_dog = Dog("小白", 3)
print(my_dog.bark()) # 输出:小白 汪汪叫,年龄 3 岁

🔄 继承与多态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 子类继承父类
class Pet(Dog):
def __init__(self, name, age, owner):
super().__init__(name, age) # 调用父类构造方法
self.owner = owner # 新增属性

def show_owner(self): # 新增方法
return f"主人是 {self.owner}"

# 多态示例
class Cat(Dog):
def bark(self): # 重写父类方法
return f"{self.name} 喵喵叫"

pet = Pet("豆豆", 2, "小明")
cat = Cat("小花", 1)
print(pet.show_owner()) # 主人是 小明
print(cat.bark()) # 小花 喵喵叫

📦 2. 常用模块深度解析

📅 datetime 日期时间处理

1
2
3
4
5
6
7
8
9
import datetime

# 获取当前时间
now = datetime.datetime.now()
print(f"当前时间:{now}")

# 时间计算
one_week_ago = now - datetime.timedelta(weeks=1)
print(f"一周前:{one_week_ago.strftime('%Y-%m-%d')}")

📊 random 随机数生成

1
2
3
4
5
6
7
8
9
import random

# 生成随机整数
print(random.randint(1, 10)) # 1-10 之间的随机整数

# 随机打乱列表
nums = [1, 2, 3, 4, 5]
random.shuffle(nums)
print("打乱后的列表:", nums)

📡 requests HTTP 请求(需安装)

1
2
3
4
5
6
7
# 安装:pip install requests
import requests

response = requests.get("https://api.example.com/data")
if response.status_code == 200:
data = response.json()
print("请求数据:", data)

🛠️ 3. 实用编程技巧

🧵 列表推导式

1
2
3
4
5
6
7
# 生成偶数列表
even_nums = [x for x in range(10) if x % 2 == 0]
print(even_nums) # 输出:[0, 2, 4, 6, 8]

# 字典推导式
square_dict = {x: x**2 for x in range(5)}
print(square_dict) # 输出:{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

📌 生成器(Generator)

1
2
3
4
# 生成器表达式
even_gen = (x for x in range(10) if x % 2 == 0)
for num in even_gen:
print(num, end=" ") # 输出:0 2 4 6 8

🧩 装饰器(Decorator)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 统计函数执行时间的装饰器
import time

def timer(func):
def wrapper():
start = time.time()
func()
end = time.time()
print(f"执行时间:{end - start:.2f} 秒")
return wrapper

@timer # 应用装饰器
def test_function():
time.sleep(1)
print("函数执行完毕")

test_function() # 输出:函数执行完毕 执行时间:1.00 秒

📊 4. 数据处理入门(CSV 文件操作)

📄 读取 CSV 文件

1
2
3
4
5
6
import csv

with open("data.csv", "r") as f:
reader = csv.DictReader(f)
for row in reader:
print(f"姓名:{row['name']},年龄:{row['age']}")

✍️ 写入 CSV 文件

1
2
3
4
5
6
7
with open("output.csv", "w", newline="") as f:
fieldnames = ["name", "age"]
writer = csv.DictWriter(f, fieldnames=fieldnames)

writer.writeheader()
writer.writerow({"name": "Bob", "age": 25})
writer.writerow({"name": "Lily", "age": 22})

🚀 5. 实战案例:简易学生信息管理系统

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 学生类
class Student:
def __init__(self, sid, name, age):
self.sid = sid # 学号
self.name = name # 姓名
self.age = age # 年龄

# 管理系统核心逻辑
students = []

def add_student():
sid = input("请输入学号:")
name = input("请输入姓名:")
age = int(input("请输入年龄:"))
students.append(Student(sid, name, age))
print("学生添加成功!")

def list_students():
print("
学生列表:")
for idx, stu in enumerate(students, 1):
print(f"{idx}. 学号:{stu.sid},姓名:{stu.name},年龄:{stu.age}")

# 主程序
while True:
choice = input("
请选择操作:1.添加学生 2.查看列表 3.退出
")
if choice == "1":
add_student()
elif choice == "2":
list_students()
elif choice == "3":
print("系统退出,感谢使用!")
break
else:
print("无效选择,请重新输入!")