🗓 第6周 教学主题:标准库实战与虚拟环境
🎯 学习目标
- 能使用
datetime处理日期与时间 - 能用
json模块读写 JSON 数据 - 会使用
collections中的Counter和defaultdict - 了解
random模块生成随机数据 - 能创建和管理 虚拟环境(venv)
- 会使用
requirements.txt管理项目依赖
🕒 第11课:常用标准库实战(60分钟)
⏱ 时间分配建议
- 每个模块演示(30分钟)
- 综合小项目:日程记录器(25分钟)
- Q&A(5分钟)
📚 内容大纲与代码示例
1. datetime:处理日期和时间
python
from datetime import datetime, timedelta
# 获取当前时间
now = datetime.now()
print("现在是:", now) # 2025-12-30 14:30:45.123456
# 格式化输出
print(now.strftime("%Y年%m月%d日 %H:%M")) # 2025年12月30日 14:30
# 解析字符串为 datetime
date_str = "2025-12-25"
christmas = datetime.strptime(date_str, "%Y-%m-%d")
print("圣诞节:", christmas)
# 时间计算
one_week_later = now + timedelta(weeks=1)
print("一周后:", one_week_later.strftime("%m月%d日"))
💡 常用格式符:
%Y(四位年)、%m(月)、%d(日)、%H(24小时)、%M(分)
2. json:读写 JSON 数据(Web/API 常用)
python
import json
# Python 对象 → JSON 字符串
data = {"name": "张三", "tasks": ["买菜", "写代码"], "done": False}
json_str = json.dumps(data, ensure_ascii=False, indent=2)
print(json_str)
# 写入文件
with open("todo.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
# 从文件读取
with open("todo.json", "r", encoding="utf-8") as f:
loaded = json.load(f)
print(loaded["name"]) # 张三
✅
ensure_ascii=False:保留中文✅
indent=2:美化输出(适合调试)
3. collections:更强大的容器
python
from collections import Counter, defaultdict
# Counter:快速统计
text = "hello world"
letter_count = Counter(text)
print(letter_count) # Counter({'l': 3, 'o': 2, ...})
print(letter_count.most_common(2)) # [('l', 3), ('o', 2)]
# defaultdict:避免 KeyError
word_groups = defaultdict(list)
words = ["apple", "banana", "cherry", "avocado"]
for word in words:
first_letter = word[0]
word_groups[first_letter].append(word)
print(word_groups["a"]) # ['apple', 'avocado']
print(word_groups["z"]) # [](不会报错!)
4. random:生成随机数据
python
import random
print(random.randint(1, 10)) # 1~10 的整数
print(random.choice(["红", "绿", "蓝"])) # 随机选一个
print(random.sample(range(1, 100), 5)) # 无重复抽5个
# 洗牌
cards = ["A", "K", "Q", "J"]
random.shuffle(cards)
print(cards)
🔐 注意:
random不适用于加密!需用secrets模块(高级)
✍️ 课堂练习:日程记录器(25分钟)
python
# 任务:创建一个简单的日程管理器
# 1. 用户输入事件名称
# 2. 自动记录当前时间(用 datetime)
# 3. 将事件保存为 JSON 格式到 schedule.json
# 4. 每次启动时读取并显示已有事件数量
# 示例输出:
# 已有 2 个日程
# 新事件: 开会
# 已保存!
✅ 参考答案:
python
import json
from datetime import datetime
import os
# 读取已有日程
if os.path.exists("schedule.json"):
with open("schedule.json", "r", encoding="utf-8") as f:
schedule = json.load(f)
else:
schedule = []
print(f"已有 {len(schedule)} 个日程")
# 添加新事件
event = input("新事件: ")
now = datetime.now().strftime("%Y-%m-%d %H:%M")
schedule.append({"event": event, "time": now})
# 保存
with open("schedule.json", "w", encoding="utf-8") as f:
json.dump(schedule, f, ensure_ascii=False, indent=2)
print("已保存!")
🕒 第12课:虚拟环境与依赖管理(60分钟)
⏱ 时间分配
- 虚拟环境概念讲解(15分钟)
- 实操:创建 venv + 安装包(20分钟)
- 依赖导出与重建(15分钟)
- 最佳实践总结(10分钟)
📚 为什么需要虚拟环境?
不同项目可能依赖不同版本 的第三方库(如项目A用 Django 3,项目B用 Django 4)
虚拟环境 = 隔离的 Python 环境,互不干扰!
1. 创建虚拟环境(使用 venv,Python 内置)
bash
# 在项目目录下执行(终端,非 Python!)
python -m venv myenv
✅
myenv是环境文件夹名(可自定义)
2. 激活虚拟环境
-
Windows (CMD/PowerShell) :
bashmyenv\Scripts\activate -
macOS / Linux :
bashsource myenv/bin/activate
✅ 激活后,命令行前会显示
(myenv)
3. 在虚拟环境中安装包
bash
# 激活后执行
pip install requests colorama
✅ 所有包只安装在
myenv中,不影响系统 Python
4. 导出依赖列表(生成 requirements.txt)
bash
pip freeze > requirements.txt
✅
requirements.txt内容示例:
colorama==0.4.6 requests==2.31.0
5. 在新机器/新环境重建项目
bash
# 1. 创建新虚拟环境
python -m venv new_env
# 2. 激活
source new_env/bin/activate # 或 Windows 方式
# 3. 安装依赖
pip install -r requirements.txt
✅ 完美复现开发环境!
6. 退出虚拟环境
bash
deactivate
✍️ 课堂练习(15分钟)
bash
# 1. 在当前目录创建虚拟环境 myproject_env
# 2. 激活它
# 3. 安装 colorama 和 requests
# 4. 生成 requirements.txt
# 5. 写一个 test.py,用 colorama 打印彩色"环境已就绪!"
# 6. 运行 test.py
# 7. 退出环境
✅ test.py 参考代码:
python
from colorama import Fore, init
init()
print(Fore.GREEN + "环境已就绪!" + Fore.RESET)
🧠 本周核心概念速记卡
| 工具 | 用途 |
|---|---|
datetime |
获取/格式化/计算时间 |
json |
读写 JSON(API/配置文件) |
Counter |
快速统计元素频率 |
defaultdict |
避免字典 KeyError |
venv |
创建隔离的 Python 环境 |
pip freeze |
导出当前环境依赖 |
requirements.txt |
项目依赖清单,用于重建环境 |
📝 课后小任务(可选)
创建一个"天气模拟器"项目文件夹:
- 初始化虚拟环境
- 安装
fake-useragent(生成随机 User-Agent)- 编写
weather_sim.py:用random生成城市天气,用datetime标记时间,用json保存- 生成
requirements.txt