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

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.

相关推荐
热点推荐
CBA积分榜:广厦、上海仍位居前二,深圳升至第5+四川队19连败

CBA积分榜:广厦、上海仍位居前二,深圳升至第5+四川队19连败

烧体坛
2026-01-25 21:53:57
CBA排名一夜大变!广东回原点喜从天降 辽宁无路可退 吉林守门员

CBA排名一夜大变!广东回原点喜从天降 辽宁无路可退 吉林守门员

体坛热消息
2026-01-25 22:28:22
李亚鹏带货的茶厂因“爆单”暂停直播,称订单量远超预期,员工都在加班加点拼命出货

李亚鹏带货的茶厂因“爆单”暂停直播,称订单量远超预期,员工都在加班加点拼命出货

极目新闻
2026-01-25 13:19:15
被格兰带队征服!明确末节阵容+盘活防守,冯傲吴冠希成最大赢家

被格兰带队征服!明确末节阵容+盘活防守,冯傲吴冠希成最大赢家

篮球资讯达人
2026-01-25 22:21:14
推迟比赛,NBA因联邦特工参与致命枪击事件推迟森林狼与勇士比赛

推迟比赛,NBA因联邦特工参与致命枪击事件推迟森林狼与勇士比赛

好火子
2026-01-25 04:11:22
“富婆”李湘栽了:这20年的钱,她到底赚得有多野?

“富婆”李湘栽了:这20年的钱,她到底赚得有多野?

红大娘娱乐
2026-01-18 17:20:47
【西甲】时隔43天重返诺坎普,巴萨遣上最强三戟

【西甲】时隔43天重返诺坎普,巴萨遣上最强三戟

体坛周报
2026-01-25 23:00:13
不是迷信!腊月初八当天,最不能做的5件事,告诉家人早知道

不是迷信!腊月初八当天,最不能做的5件事,告诉家人早知道

阿龙美食记
2026-01-23 03:09:12
背刺中国、吞死人钱,出卖孟晚舟的真凶被挖出来后,结局大快人心

背刺中国、吞死人钱,出卖孟晚舟的真凶被挖出来后,结局大快人心

素玉姑娘
2026-01-22 19:16:12
这一周,太疯狂了!东契奇防住了卡戴珊!!

这一周,太疯狂了!东契奇防住了卡戴珊!!

柚子说球
2026-01-25 12:40:21
范元甄:曾是红极一时的“延安四美”,却因“太聪明”输掉了一生

范元甄:曾是红极一时的“延安四美”,却因“太聪明”输掉了一生

干史人
2026-01-23 11:48:39
王诗龄这会儿估计也挺闹心的,李湘自己没料到,孩子怕是也想不通

王诗龄这会儿估计也挺闹心的,李湘自己没料到,孩子怕是也想不通

小光侃娱乐
2026-01-25 14:45:03
何超琼没想到,倒贴14亿嫁东北小伙的何超盈,如今竟给她狠狠长脸

何超琼没想到,倒贴14亿嫁东北小伙的何超盈,如今竟给她狠狠长脸

青橘罐头
2026-01-25 19:25:18
和父母聊天能有多搞笑,父母的精神状态领先我们几百年!

和父母聊天能有多搞笑,父母的精神状态领先我们几百年!

夜深爱杂谈
2026-01-23 20:32:56
保时捷女销冠来汉领取“特别贡献奖”:去年卖出192台车连续三年蝉联销冠,超60%是女顾客,今年没有定目标

保时捷女销冠来汉领取“特别贡献奖”:去年卖出192台车连续三年蝉联销冠,超60%是女顾客,今年没有定目标

极目新闻
2026-01-24 18:12:15
从香港回深圳一脚跨出,八大现实反差直戳心坎

从香港回深圳一脚跨出,八大现实反差直戳心坎

初见音乐吧
2026-01-24 16:00:03
张伯鑫生日许愿,喊话郭德纲希望能帮帮他,怀念从前“南郭北张”

张伯鑫生日许愿,喊话郭德纲希望能帮帮他,怀念从前“南郭北张”

杨仔述
2026-01-25 20:00:13
卡尼号召加拿大人“购买国货”以回应美国关税威胁

卡尼号召加拿大人“购买国货”以回应美国关税威胁

环球网资讯
2026-01-25 06:13:20
李亚鹏曝光捐赠名单,向太发声:我捐了几百万,王菲默默支持了几千万,也是不够的……

李亚鹏曝光捐赠名单,向太发声:我捐了几百万,王菲默默支持了几千万,也是不够的……

都市快报橙柿互动
2026-01-24 19:48:42
新华社记者直击伊朗最新局势

新华社记者直击伊朗最新局势

新华社
2026-01-24 17:45:55
2026-01-25 23:59:00
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1724文章数 72关注度
往期回顾 全部

科技要闻

黄仁勋在上海逛菜市场,可能惦记着三件事

头条要闻

男孩打碎电视屏为"还债"在小区创业 不到2个月赚了6千

头条要闻

男孩打碎电视屏为"还债"在小区创业 不到2个月赚了6千

体育要闻

中国足球不会一夜变强,但他们已经创造历史

娱乐要闻

央八开播 杨紫胡歌主演的40集大剧来了

财经要闻

隋广义等80人被公诉 千亿骗局进入末路

汽车要闻

别克至境E7内饰图曝光 新车将于一季度正式发布

态度原创

艺术
游戏
本地
公开课
军事航空

艺术要闻

砸31亿!赛力斯“超级圆环”新进展,造型太科幻!

LPL春季赛:没有哥哥,也就没有叛忍之战!TES零封IG

本地新闻

云游中国|格尔木的四季朋友圈,张张值得你点赞

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

俄美乌三方首轮会谈细节披露

无障碍浏览 进入关怀版