网易首页 > 网易号 > 正文 申请入驻

Python 编程B12:模块与包

0
分享至

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 scores

calc_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.

相关推荐
热点推荐
出卖信任的刀,最终刺向了谁?汇丰银行为孟晚舟事件付出惊人代价

出卖信任的刀,最终刺向了谁?汇丰银行为孟晚舟事件付出惊人代价

顾史
2026-01-28 20:39:56
删除了?北京国安“人在做,天在看”的回应已不可见

删除了?北京国安“人在做,天在看”的回应已不可见

懂球帝
2026-01-29 15:21:31
伟大的2-0!中国金花直通澳网决赛:解锁2大成就,争冠对手确定!

伟大的2-0!中国金花直通澳网决赛:解锁2大成就,争冠对手确定!

刘姚尧的文字城堡
2026-01-29 16:33:24
16枚导弹全部击中,基辅电厂彻底瘫痪!乌克兰或后悔先挑起能源战

16枚导弹全部击中,基辅电厂彻底瘫痪!乌克兰或后悔先挑起能源战

小小科普员
2026-01-27 23:31:04
阿富汗永久禁止女性上学,就没有世界警察能管管吗?

阿富汗永久禁止女性上学,就没有世界警察能管管吗?

历史总在押韵
2026-01-28 23:33:00
金融、电力、烟草、石油,多地对“近亲繁殖”出手了

金融、电力、烟草、石油,多地对“近亲繁殖”出手了

中国新闻周刊
2026-01-27 14:23:19
乌克兰击落价值3500万美元的俄Su-34战斗机

乌克兰击落价值3500万美元的俄Su-34战斗机

桂系007
2026-01-29 13:00:04
女子把充电枪扔地上碾压后续:车牌曝光已社死,恶心事不止一件

女子把充电枪扔地上碾压后续:车牌曝光已社死,恶心事不止一件

奇思妙想草叶君
2026-01-28 23:43:15
一周13人伤亡!建议中国游客春节避免前往俄罗斯旅游

一周13人伤亡!建议中国游客春节避免前往俄罗斯旅游

基本常识
2026-01-28 22:17:24
上海六旬男子去世前写错遗嘱,把“外甥”写成“外孙”,外甥为数百万元遗产起诉,法院判了

上海六旬男子去世前写错遗嘱,把“外甥”写成“外孙”,外甥为数百万元遗产起诉,法院判了

环球网资讯
2026-01-29 07:33:07
曝字母哥做好交易换队准备!多队开出重磅报价 雄鹿开始听取方案

曝字母哥做好交易换队准备!多队开出重磅报价 雄鹿开始听取方案

罗说NBA
2026-01-29 00:49:06
官方终于出手!牢A离被斩杀不远了?

官方终于出手!牢A离被斩杀不远了?

黔有虎
2026-01-29 09:58:02
金晨代言评论区沦陷!警方介入调查品牌开始切割,已删除直播预告

金晨代言评论区沦陷!警方介入调查品牌开始切割,已删除直播预告

萌神木木
2026-01-29 15:37:44
阿富汗禁止女性教育权,那些叫好的变态现实中都是哪些人?

阿富汗禁止女性教育权,那些叫好的变态现实中都是哪些人?

林中木白
2026-01-28 13:22:10
全是假的!涉及多个品牌,检测结果触目惊心!网友:老人小孩都在吃

全是假的!涉及多个品牌,检测结果触目惊心!网友:老人小孩都在吃

环球网资讯
2026-01-27 15:41:14
上海这家老牌房企终究还是倒下了

上海这家老牌房企终究还是倒下了

说故事的阿袭
2026-01-28 16:35:08
大爷坐公交埋怨女孩不让座,推倒女孩后,女孩一个电话令大爷懵了

大爷坐公交埋怨女孩不让座,推倒女孩后,女孩一个电话令大爷懵了

五元讲堂
2025-09-10 14:59:26
82岁湖北大爷背包独行10年闯世界:解锁四大洲踏遍10余国,一个月花掉近一年退休金,下一站准备征服美洲

82岁湖北大爷背包独行10年闯世界:解锁四大洲踏遍10余国,一个月花掉近一年退休金,下一站准备征服美洲

极目新闻
2026-01-29 10:56:03
吴君如很早就说过了,陈妍希私下就是这样穿

吴君如很早就说过了,陈妍希私下就是这样穿

八星人
2026-01-21 15:14:26
上海申花三次被罚!新赛季被扣10分,媒体人:争冠彻底洗洗睡

上海申花三次被罚!新赛季被扣10分,媒体人:争冠彻底洗洗睡

奥拜尔
2026-01-29 10:52:40
2026-01-29 17:52:49
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1727文章数 72关注度
往期回顾 全部

科技要闻

周亚辉的AI新赌局:国内太卷 出海另起炉灶

头条要闻

在衡山丢失80克黄金吊坠男子已返乡 警方证实接到报警

头条要闻

在衡山丢失80克黄金吊坠男子已返乡 警方证实接到报警

体育要闻

詹姆斯哭了!骑士视频致敬41岁超巨

娱乐要闻

张译不再隐瞒!公开回应退圈息影真相

财经要闻

崔东树:中国汽车未来年销或达5000万辆

汽车要闻

车长超5米还带后轮转向 比亚迪海豹08/海狮08将亮相

态度原创

艺术
健康
亲子
家居
数码

艺术要闻

梵高全集(高清350张)震撼……

耳石症分类型,症状大不同

亲子要闻

一个现象:县城里的孕妇越来越少了

家居要闻

极简轻奢 家的无限可能

数码要闻

新势力、颜值高、堆料猛!七彩虹X870E火神主板测评

无障碍浏览 进入关怀版