Python3 教程-14. 阶段小实战
📌 版本说明:本教程支持 Python 3.8+,部分类型注解特性需要 Python 3.9+,旧版本可使用兼容的类型导入。
🎯 教程说明:本教程分为基础单文件版和进阶模块化版,零基础用户可以直接使用单文件版快速运行,有基础的用户可以深入学习模块化设计与测试。
创建的文件
基础版(零基础用户)
仅需 1 个文件,复制即可运行:
- calculator.py - 单文件计算器,包含所有功能,无需拆分模块
进阶版(有基础用户)
模块化拆分的项目结构,便于维护与扩展:
calculator - 计算器包
__init__.py- 包文件,简化导入,提供公共 APIoperations.py- 运算模块,包含加减乘除函数input_handler.py- 输入模块,处理用户输入和异常检测output_display.py- 输出模块,格式化展示计算结果controller.py- 控制模块,协调整个计算流程
main.py - 主程序入口
test_calculator.py - 测试脚本,验证所有功能
包含 12 个测试用例,覆盖正常运算、边界条件、异常输入等场景
所有测试通过 ✅
运行方式
基础版运行(零基础用户)
你只需要运行单文件即可:
1 | python calculator.py |
进阶版运行(有基础用户)
1 | # 进入项目目录 |
Python 简易计算器教程
计算器项目是编程入门的经典实践案例,它不仅能帮助初学者掌握基础语法,还能深入理解模块化设计、函数封装、异常处理等概念。本文将从基础到进阶,指导你构建一个功能完整的计算器,同时兼顾不同基础的学习者。
1. 零基础入门:单文件计算器
零基础用户:你可以直接复制下面的代码到
calculator.py文件中,直接运行即可,我们会逐步解释每一部分的作用。
1 | def add(a: float, b: float) -> float: |
零基础小提示:这个单文件版本把所有功能都放在一个文件里,你不需要理解复杂的模块,直接运行就可以使用计算器了,等你掌握了基础,我们再学习进阶的模块化设计。
2. 进阶学习:模块化计算器📚
有基础的用户:这部分我们会把代码拆分成独立的模块,学习 Python 的包和模块化设计,让代码更易维护和扩展。
2.1 需求分析与模块划分
模块化设计意味着将软件系统划分为若干个功能相对独立的模块,每个模块负责不同的功能,这些模块之间通过定义明确的接口进行通信。对于一个四则运算计算器,我们可以划分为以下四个主要模块:
输入模块:负责接收用户输入的数值和运算符,验证输入有效性
运算模块:执行具体的加减乘除运算,处理运算异常
输出模块:将计算结果格式化展示给用户
控制模块:管理各个模块之间的交互和数据传递
这种模块化设计带来了以下优势:
代码清晰,易于理解:每个模块专注于单一功能
便于维护和调试:修改或修复一个模块不会影响其他模块
提高代码复用性:功能模块可被其他项目重用
支持团队协作:不同开发者可同时在不同模块上工作
2.2 项目目录结构
我们将项目组织为以下结构:
1 | calculator_project/ |
2.3 各模块代码实现
2.3.1 运算模块:operations.py
1 | from typing import Dict, Callable |
2.3.2 输入模块:input_handler.py
1 |
|
2.3.3 输出模块:output_display.py
1 |
|
2.3.4 控制模块:controller.py
1 |
|
2.3.5 包初始化文件:init.py
这个文件用来标记这是一个 Python 包,同时简化导入:
1 |
|
2.3.6 主程序入口:main.py
1 |
|
2.4 进阶:单元测试
有基础用户:我们可以使用 pytest 来测试我们的代码,确保所有功能都正常工作。
创建test_calculator.py文件:
1 |
|
3. 模块化设计的优势与扩展性📚
3.1 模块化带来的优势
代码清晰,易于理解:每个模块专注于单一功能,代码结构清晰
便于维护和调试:修改或修复一个模块不会影响其他模块的功能
提高代码复用性:运算模块可被其他需要四则运算的程序重用
支持团队协作:不同开发者可同时在不同模块上工作,互不影响
简化测试流程:单元测试可独立测试每个模块,集成测试验证模块交互
3.2 未来扩展性
当前的模块化设计为计算器的未来扩展提供了良好的基础:
添加新运算:只需在
operations.py中添加新函数,并更新op_functions字典添加历史记录:可以新增一个
history.py模块,记录用户的计算历史支持科学计算:可以扩展运算模块,添加开方、幂运算等功能
支持 GUI 界面:可以替换输入输出模块,使用 GUI 界面而不是命令行

