8.8 模块与包
模块化是从“会写程序”走向“会设计程序”的关键一步。
8.8.1 抽象与代码复用
在前面的学习中,我们反复强调函数是程序的基本构件,用于封装逻辑、复用代码。
然而,当程序规模逐渐增大,仅靠函数仍会出现两个问题:
• 文件过长,难以阅读与维护。
• 各部分代码之间容易相互干扰。
模块化(Modularization)的思想由此产生。它将一个大程序划分为若干相对独立的部分,每一部分完成特定功能,从而实现更高层次的复用与管理。
简言之,函数让代码“可重用”,模块让程序“可组织”。
8.8.2 模块的概念与作用
模块(module)是 Python 程序的基本组织单位,就像积木块一样,它让我们可以把不同功能的代码分离存放、独立测试、自由组合。
一个模块就是一个以 .py 为扩展名的 Python 文件,内部可以包含变量、函数、类或可执行语句等。
示例:
return x ** 3在另一个文件中即可导入使用:
print(math_demo.cube(2))输出:
8模块化的好处有:
• 复用性:一次编写,多处导入。
• 可维护性:不同文件独立开发与更新。
• 命名空间隔离:避免变量名冲突。
• 清晰结构:提高项目可读性。
8.8.3 模块的导入方式
Python 提供了多种导入语法,让我们能灵活地访问模块内容。
(1)标准导入
会加载整个模块,通过“模块名.成员名”访问其中内容。
print(math.sin(math.pi / 2))(2)按需导入
只导入指定函数或变量,可直接使用名称。
print(pow(2, 3))(3)别名导入
as 用于为模块起别名,便于书写或避免命名冲突。
print(m.cos(0))(4)导入所有
* 会导入模块内所有公开成员,容易造成命名混乱,不推荐使用。
print(sin(1))8.8.4 __name__ 与主程序结构
一个 .py 文件既可以被导入为模块,也可以作为主程序单独运行。
Python 提供内置变量 来区分这两种情况:
• 当模块被直接运行时,__name__ == "__main__";
• 当模块被导入时,__name__ 的值为模块名。
示例:
print("greet.py 被导入")直接运行:
Hello from greet module!当另一个文件导入它:
import greet输出:
greet.py 被导入if __name__ == "__main__": 用于指定主程序入口。这是一种良好的模块设计习惯。
8.8.5 模块搜索路径
当执行 import 时,Python 按一定顺序查找模块。
(1)查看搜索路径
print(p)输出示例:
...sys.path 初始值由环境变量 PYTHONPATH、当前工作目录及安装路径共同组成。
(2)添加搜索路径
sys.path.append("C:/mypythonmodules")可在运行时动态添加路径,便于导入自编模块。
8.8.6 包与 __init__.py
当模块数量增多时,就需要更高级的组织形式。
包(Package)本质上是一个包含多个模块的文件夹,并且内部有一个特殊文件 __init__.py。
(1)目录结构示例
stringutils.py__init__.py:包的初始化文件(可为空);其余 .py 文件即包内模块。
(2)导入包内模块
mathutils.add(2, 3)或:
add(2, 3)(3) __init__.py 的作用
1、标识该目录为包。
2、可在其中初始化包环境或统一导出接口。
示例:
from .mathutils import add这样就能:
from mypackage import add从 Python 3.3 起,即使没有 __init__.py,目录也可被识别为包(称为隐式命名空间包),但为了兼容旧版本及初始化逻辑,仍建议保留该文件。
8.8.7 模块化的工程意义
模块与包不仅是语法结构,更是一种程序设计思想。
模块化让程序具备以下能力:
分工合作 —— 团队可并行开发不同模块。
独立测试 —— 每个模块可单独运行与调试。
持续集成 —— 模块更新无需影响全局结构。
可扩展性 —— 新功能只需增加模块,而非修改旧代码。
这也是软件工程从“小脚本”走向“系统设计”的必经之路。
例 8.8.1:用模块化方法实现“成绩统计程序”
下面的示例展示了如何将一个小型程序按功能拆分成多个模块,形成清晰结构与可维护性。
(1)模块结构
└── main.py(2)各模块内容
input_utils.py
return scorescalc_utils.py
return "不及格"main.py
print(f"平均分:{avg:.1f},评价:{result}")(3)运行结果示例
平均分:84.3,评价:良好8.9 标准库与第三方库
Python 拥有极其庞大的模块生态系统。
大部分常见功能都能通过标准库(Standard Library)或第三方库(Third-Party Libraries)实现。
(1)常用标准库举例
模块名
功能简介
示例应用
提供数学函数和常数
三角函数、对数、平方根等
生成随机数或随机选择
模拟抽签、随机密码生成
处理日期与时间
计算时间差、获取当前日期
与操作系统交互
文件路径、环境变量、进程信息
访问解释器相关信息
命令行参数、退出程序
处理 JSON 数据
保存/加载配置文件
正则表达式匹配
文本检索与替换
统计计算函数
平均数、中位数、方差
高级容器数据类型
Counter、deque、defaultdict 等
高效迭代工具
排列组合、无限迭代
面向对象的文件路径处理
便捷地读写文件与路径操作
读写 CSV 文件
表格数据导入导出
处理 URL 与 HTTP 请求
简易网页数据抓取
图形界面(GUI)开发
简易窗口程序
程序运行日志管理
调试与错误记录
例 8.9.1绘制几何图案
例如,使用 库绘制几何图案。
t.done()(2)常用第三方库举例
库名
功能领域
示例应用
数值计算与矩阵运算
科学计算、矩阵代数、线性代数
数据分析与数据表处理
数据清洗、统计分析
数据可视化
绘制折线图、柱状图、散点图
统计图形美化
高级可视化与风格化图表
HTTP 网络请求
爬虫、API 调用
HTML 解析
网页内容提取
Excel 文件读写
自动化办公、数据导入导出
图像处理
图片裁剪、滤镜、格式转换
深度学习框架
模型训练与推理
深度学习框架
分布式训练、推理与部署
机器学习算法库
分类、聚类、回归
轻量级 Web 框架
小型网站与 API 服务
高性能 Web 接口框架
AI 模型接口部署
数据应用快速可视化
AI 可视化界面开发
打包与发布工具
将 .py 打包为可执行程序
安全表达式计算
用户输入求值、安全沙箱
这些库组成了 Python 在科学计算、人工智能与工程应用中的强大生态体系。
例 8.9.2:生成词云图
在自然语言处理(NLP)与可视化分析中,词云图(Word Cloud)是一种直观展示文本中高频词的方式。
通过 Python 的第三方库 和 ,可以快速生成漂亮的文字云图。
安装依赖:
pip install wordcloud matplotlib示例代码:
plt.show()小结
本次课学习了 Python 的模块化设计思想,了解模块与包在程序结构中的作用。掌握了 import 的多种用法、__name__ == "__main__" 的主程序机制、模块搜索路径及包的组织形式。
通过模块化,代码可被分解为独立单元,便于复用与维护。同时初步了解了常用标准库和第三方库,为今后在数据处理、可视化与人工智能等领域的应用打下基础。
在下一阶段,我们将进入组合类型数据(列表、元组、字典、集合)学习,进一步理解数据的组织方式与程序的逻辑表达能力。
“点赞有美意,赞赏是鼓励”
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.