Python零基础通关教程(四):模块化编程与常用标准库实战(升级日记本程序)

一、知识衔接:构建编程思维体系

前三篇核心能力
✅ 基础语法 ✅ 数据结构 ✅ 文件操作 ✅ 字符串处理
本篇新维度

graph LR
    A[前篇技能] --> B[模块化思维]
    B --> C[时间处理]
    B --> D[路径管理]
    B --> E[数据序列化]

二、模块化编程:像搭积木一样写代码

1. 模块是什么?(生活化比喻)

  • 现实比喻:像手机里的APP,每个APP专注解决特定问题

  • 代码定义:把相关功能封装成.py文件,通过import调用

# 使用math模块计算
import math
print("16的平方根:", math.sqrt(16))  # 输出4.0

# 给模块起别名
import datetime as dt
print("当前年份:", dt.datetime.now().year)

2. 自定义模块实战(手把手教学)

步骤1:创建diary_utils.py文件
# 日记工具模块
def get_current_time():
    """获取当前时间"""
    import datetime
    return datetime.datetime.now().strftime("%Y-%m-%d %H:%M")

def format_diary(content):
    """给日记内容添加分隔线"""
    return f"\n{'='*20}\n{content}\n{'='*20}"
步骤2:在主程序中使用
import diary_utils as du

time = du.get_current_time()
content = du.format_diary("今天学会了模块化编程!")
print(f"{time}{content}")

三、时间处理:让程序记住时间(datetime精讲)

1. 基础时间操作

from datetime import datetime

# 获取当前时间
now = datetime.now()
print(f"现在是:{now.year}年{now.month}月{now.day}日 {now.hour}点")

# 计算三天后的时间
future = now + datetime.timedelta(days=3)
print("三天后是:", future.strftime("%m/%d"))

2. 时间格式化对照表

格式代码说明示例
%Y四位年份2024
%m两位月份03
%d两位日期15
%H24小时制小时14
%M分钟05

四、路径管理:智能处理文件位置(os模块实战)

1. 常用文件操作

import os

# 检查文件是否存在
if os.path.exists("diary.txt"):
    print("日记文件已存在")
else:
    print("即将创建新日记本")

# 创建存档文件夹
os.makedirs("diary_archive", exist_ok=True)

2. 文件批量重命名(自动化案例)

# 将所有.txt文件添加日期后缀
for filename in os.listdir():
    if filename.endswith(".txt"):
        new_name = f"{filename[:-4]}_{datetime.now().strftime('%Y%m%d')}.txt"
        os.rename(filename, new_name)

五、综合实战:智能日记本升级版

import os
import datetime
from diary_utils import format_diary  # 导入自定义模块

DIARY_DIR = "diary_archive"

def write_diary():
    content = input("请输入今日日记:")
    today = datetime.date.today()
    
    # 按月份创建文件夹
    month_dir = os.path.join(DIARY_DIR, f"{today.year}-{today.month:02d}")
    os.makedirs(month_dir, exist_ok=True)
    
    # 保存到日期文件
    file_path = os.path.join(month_dir, f"{today.day:02d}.txt")
    with open(file_path, "w", encoding="utf-8") as f:
        f.write(format_diary(content))
    print("日记已存档!")

def search_diary():
    keyword = input("输入搜索关键词:")
    for root, dirs, files in os.walk(DIARY_DIR):
        for file in files:
            path = os.path.join(root, file)
            with open(path, "r") as f:
                if keyword in f.read():
                    print(f"找到相关日记:{path}")

# 主程序(沿用第三篇的交互逻辑)
# ...(此处省略重复的菜单代码,可访问评论区获取完整源码)

六、避坑指南

  1. 循环导入问题

    • 错误场景:A模块导入B模块,B模块又导入A模块

    • 解决方案:重构代码结构,提取公共部分到第三方模块

  2. 路径找不到的终极方案

# 获取当前脚本的绝对路径
current_path = os.path.dirname(os.path.abspath(__file__))
file_path = os.path.join(current_path, "data.txt")

学习路线建议

  1. 今日任务

    • 尝试将之前写的代码拆分成模块

    • 用datetime记录自己每天的学习时长

  2. 模块化思维训练

# 把以下功能拆分成模块:
# 1. 文件操作工具(创建/删除文件)
# 2. 数学计算工具(加减乘除)
# 3. 字符串处理工具(加密/解密)

 📢 下期预告:面向对象编程入门(用类重构日记本程序)
💡 小预告:下篇将实现多用户日记系统,添加登录验证功能!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值