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

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.

相关推荐
热点推荐
你的盗版Windows,可能一夜之间“失效”了!微软正式封杀KMS38,“白嫖时代”或将走向终点

你的盗版Windows,可能一夜之间“失效”了!微软正式封杀KMS38,“白嫖时代”或将走向终点

CSDN
2025-11-17 18:22:48
53岁藤原纪香近照曝光,长相不如方媛,但身材更饱满圆润一些

53岁藤原纪香近照曝光,长相不如方媛,但身材更饱满圆润一些

阿废冷眼观察所
2025-11-19 03:53:42
中国必将坚定支持!这场冲突任何人都无法调停,只能开战!

中国必将坚定支持!这场冲突任何人都无法调停,只能开战!

起喜电影
2025-11-16 00:19:11
25届最强新秀!近8战场均21+7,不像克莱更像库里,三球要让位了

25届最强新秀!近8战场均21+7,不像克莱更像库里,三球要让位了

你的篮球频道
2025-11-18 14:10:11
退赛仅1个月,郑钦文再次让全网刮目相看,李娜一个字都没说错

退赛仅1个月,郑钦文再次让全网刮目相看,李娜一个字都没说错

带你逛体坛
2025-11-16 11:05:33
天津机场凌晨发生恶劣事件

天津机场凌晨发生恶劣事件

天津族
2025-11-19 07:35:48
雷军的愤怒,一文不值

雷军的愤怒,一文不值

公子麦少
2025-11-18 14:36:23
香港知名电影人痛斥《新闻女王2》!称浪费佘诗曼黄宗泽好演员!

香港知名电影人痛斥《新闻女王2》!称浪费佘诗曼黄宗泽好演员!

我爱追港剧
2025-11-18 12:36:02
失误!卡纳瓦罗执教乌兹以弱胜强:击败萨拉赫领衔的埃及队

失误!卡纳瓦罗执教乌兹以弱胜强:击败萨拉赫领衔的埃及队

邱泽云
2025-11-18 15:05:02
CT或引发10万例新发癌症?做一次得癌风险增4成?医生说出了真相

CT或引发10万例新发癌症?做一次得癌风险增4成?医生说出了真相

DrX说
2025-11-17 14:15:52
一旦开打,要让解放军“找不着北”,继王世坚之后,于北辰也火了

一旦开打,要让解放军“找不着北”,继王世坚之后,于北辰也火了

沧海旅行家
2025-11-18 12:52:41
这些电器“再降价也不要买”,已逐渐淡出中国家庭,建议及时止损

这些电器“再降价也不要买”,已逐渐淡出中国家庭,建议及时止损

装修秀
2025-10-18 11:30:03
你见过出轨得到报应的人吗?网友:万恶淫为首,乱搞终究会被反噬

你见过出轨得到报应的人吗?网友:万恶淫为首,乱搞终究会被反噬

带你感受人间冷暖
2025-09-14 00:20:07
马尔蒂尼:希望意大利进世界杯;不会去米兰以外的任何俱乐部

马尔蒂尼:希望意大利进世界杯;不会去米兰以外的任何俱乐部

懂球帝
2025-11-19 07:48:13
场均42分!18岁猛将该进国家队!广东夺冠疯狂庆祝,杜锋拥抱他

场均42分!18岁猛将该进国家队!广东夺冠疯狂庆祝,杜锋拥抱他

老吴说体育
2025-11-19 00:50:11
全运会女子团体半决赛:孙颖莎轻松横扫,河北队3-0完胜黑龙江

全运会女子团体半决赛:孙颖莎轻松横扫,河北队3-0完胜黑龙江

全景体育V
2025-11-18 19:26:15
刚刚,年度最强 AI 登场!马斯克奥特曼点赞 Gemini 3,体验后我发现 ChatGPT 要慌了

刚刚,年度最强 AI 登场!马斯克奥特曼点赞 Gemini 3,体验后我发现 ChatGPT 要慌了

爱范儿
2025-11-19 05:51:30
不管卤什么肉,只要放3克它,卤肉出锅十里飘香,肥而不腻

不管卤什么肉,只要放3克它,卤肉出锅十里飘香,肥而不腻

美食格物
2025-11-18 20:35:19
劝告邱毅千万不要在错误的道路越走越远!

劝告邱毅千万不要在错误的道路越走越远!

奇思妙想生活家
2025-10-28 15:14:58
越来越不对劲,小县城的工资开始崩塌了

越来越不对劲,小县城的工资开始崩塌了

诗意世界
2025-11-13 10:25:43
2025-11-19 08:52:49
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1597文章数 70关注度
往期回顾 全部

科技要闻

一夜封神,Gemini 3让谷歌找回“碾压感”

头条要闻

美女主播设"同城约会"骗局:刷礼物换"香艳"视频

头条要闻

美女主播设"同城约会"骗局:刷礼物换"香艳"视频

体育要闻

结束最后一次对决,陈梦和朱雨玲笑着相拥

娱乐要闻

宋佳夺影后动了谁的奶酪

财经要闻

大规模宕机!美国多个网站崩了

汽车要闻

硬核配置旗舰气场 岚图泰山售37.99万起

态度原创

健康
数码
亲子
手机
军事航空

警惕超声报告这六大"坑"

数码要闻

苹果用3D打印造Apple Watch表壳,节省400吨钛原料

亲子要闻

冬季克服寒冷锻炼孩子意志力

手机要闻

苹果iPhone 17 N1芯片令其在北美Wi-Fi性能上领先

军事要闻

中方代表:日本毫无资格要求成为安理会常任理事国

无障碍浏览 进入关怀版