python12(模块  包)
模块与包在前文的基础上我们今天继续学习Python 的模块与包机制。Python 的模块与包是代码组织的核心工具其作用在于按功能职责对代码进行逻辑分区从而提升可维护性与可复用性。任何非 trivial 项目都不应将所有代码置于单一文件中否则将导致命名冲突、依赖混乱与调试困难。模块与包提供了清晰的层级收纳方案使代码结构条理分明。一、模块Module—— 一个文件即一个工具包模块在物理上对应一个.py文件文件名即为模块名。例如若创建tools.py则tools即为一模块其中可定义函数、变量、类等任意 Python 对象。导入方式Python 提供多种导入语法以适应不同场景importmodule1,module2# 导入整个模块调用时需加模块前缀module1.func()importmodule1asalias# 为模块指定别名简化后续引用frommoduleimportitem1,item2# 从模块中导入指定成员可直接使用成员名frommoduleimportitem1asalias# 导入并重命名成员frommoduleimport*# 导入模块中所有公开成员不推荐建议所有import语句应集中置于文件顶部以增强可读性。P.S.应避免使用from module import *该写法会将模块内所有名称导入当前命名空间极易导致名称覆盖且难以追踪标识符来源对调试与代码审查造成显著障碍。导入时的执行语义模块在被首次导入时其顶层代码会被完整执行一次等效于执行该.py文件。同一模块在后续导入中不会重复执行因为 Python 解释器会缓存已加载的模块对象存储在sys.modules中。二、模块搜索路径 —— 解释器定位模块的规则当执行import xxx时Python 会依照sys.path列表中的目录顺序依次查找目标模块其机制类似于按预定义的路径清单检索文件。importsysprint(sys.path)# 打印当前解释器的模块搜索路径列表若在所有路径中均未找到对应模块则引发异常ModuleNotFoundError: No module named xxx可通过向sys.path动态追加目录来扩展搜索范围但更规范的做法是使用虚拟环境或配置PYTHONPATH环境变量以避免干扰全局路径。三、__name__属性 —— 判别模块的执行上下文每个模块均内置属性__name__其取值由解释器根据执行上下文自动设定当该文件作为主程序直接运行时__name__被赋值为__main__。当该文件被其他模块导入时__name__取值为该模块的名称如tools。此特性为编写自测试代码提供了可靠机制。若希望在模块内嵌入测试用例且避免这些测试在导入时被触发可将测试逻辑置于条件判断中print(此行无论在直接运行还是导入时均会执行)if__name____main__:print(仅当该文件被直接运行时此分支内的代码才会执行)# 放置单元测试或演示代码else:print(该模块被导入测试代码未执行)如此一来导入者不会受到测试输出的干扰而开发者亦可直接运行文件进行独立验证达成关注点分离。四、包Package—— 将模块组织为文件夹层级当模块数量增长后将所有.py文件平铺于同一目录显然不符合工程规范。此时需引入包Package的概念。包在物理上对应一个文件夹其必要条件是包含一个名为__init__.py的文件该文件可为空也可写入包级别初始化代码。此文件向解释器声明该文件夹是一个包其中的子模块可按层级导入。包的核心价值命名空间隔离同一包内模块名不得重复但不同包允许存在同名模块如同不同目录下可存在同名文件有效避免全局命名冲突。功能分区按业务或技术职责将模块归入不同子包例如utils/、models/、views/这在大型项目中尤为关键有助于降低耦合、提高可维护性。包的导入语法包的导入使用点号.表示层级关系importpackage1,package2# 导入整个包较少使用通常导入包内具体模块importpackage1asalias# 为包指定别名frompackageimportmodule1,module2# 从包中导入指定模块frompackageimportmodule1asalias# 导入模块并重命名frompackage.moduleimportitem1,item2# 从包内某模块中导入具体成员frompackage.moduleimportitem1asalias# 导入成员并重命名示例目录结构myproject/ ├── __init__.py ├── utils/ │ ├── __init__.py │ └── string_helper.py └── data/ ├── __init__.py └── loader.py对应的导入示例frommyproject.utilsimportstring_helperfrommyproject.data.loaderimportload_data五、小结 —— 从数据到代码的递进封装层次纵观 Python 的设计其封装模型呈现出一致的递进层次形成从数据到代码的“套娃”式结构层级封装内容示例容器数据结构列表、字典、元组、集合函数可执行代码块def add(a, b): return ab类函数与数据的复合体class Dog: def bark(self): ...模块类、函数、变量的集合dog.py文件包多个模块的集合animals/文件夹内含__init__.py库多个包的集合通过pip安装的第三方依赖如requests、numpy简而言之模块是包的组成单元包是库的组成单元。小型项目可仅依赖若干模块而中大型项目必须严格设计包结构否则协作开发与后期维护将举步维艰。工程原则将全部代码堆砌于单一文件是不可取的初阶做法。掌握模块与包的组织方式是项目从原型演进为可交付软件的必要里程碑。如需进一步探讨欢迎随时交流。祝编码愉快。下图为本文知识点的思维导图示意

相关新闻

# 机器人第七轴选 PLX090 还是中空旋转平台?750W 伺服下的背隙、刚性与扭矩验证

# 机器人第七轴选 PLX090 还是中空旋转平台?750W 伺服下的背隙、刚性与扭矩验证

机器人第七轴选 PLX090 还是中空旋转平台?750W 伺服下的背隙、刚性与扭矩验证 1. 第七轴的误差为什么会被放大? 第七轴带动的是机器人本体、底座、末端工装和工件。减速机、齿轮齿条或旋转机构中出现的微小间隙,传递到机械臂末端后&#xf…

2026/7/31 21:21:11阅读更多 →
告别单调启动页!用Obsidian Homepage打造你的专属知识管理中心

告别单调启动页!用Obsidian Homepage打造你的专属知识管理中心

告别单调启动页!用Obsidian Homepage打造你的专属知识管理中心 【免费下载链接】obsidian-homepage Obsidian homepage - Minimal and aesthetic template (with my unique features) 项目地址: https://gitcode.com/gh_mirrors/obs/obsidian-homepage 厌倦了…

2026/7/31 21:21:11阅读更多 →
孤能子视角:AgentHOI——从“强关系锁定”到“弱关系编织”

孤能子视角:AgentHOI——从“强关系锁定”到“弱关系编织”

(在以下的与AI互动中,在EIS理论约束下,DeepSeek叫信兄,Kim叫酷兄,我呢叫水兄。姑且当科幻小说看) 讨论源于头条文章:【北大团队提出 AgentHOI:大模型也能看懂「谁在对什么做什么」】 https://m.toutiao.com…

2026/7/31 21:19:11阅读更多 →
llms.txt技术方案:解决大语言模型网站内容理解的架构化指南

llms.txt技术方案:解决大语言模型网站内容理解的架构化指南

llms.txt技术方案:解决大语言模型网站内容理解的架构化指南 【免费下载链接】llms-txt The /llms.txt file, helping language models use your website 项目地址: https://gitcode.com/gh_mirrors/ll/llms-txt 在人工智能技术快速发展的当下,大语…

2026/7/31 23:42:04阅读更多 →
Untrunc终极指南:专业视频修复工具深度解析与高效部署

Untrunc终极指南:专业视频修复工具深度解析与高效部署

Untrunc终极指南:专业视频修复工具深度解析与高效部署 【免费下载链接】untrunc Restore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video. 项目地址: https://gitcode.com/gh_mirrors/unt/untrunc Untrunc是…

2026/7/31 23:42:04阅读更多 →
5分钟掌握Lottie-Windows:Windows动画开发的终极指南

5分钟掌握Lottie-Windows:Windows动画开发的终极指南

5分钟掌握Lottie-Windows:Windows动画开发的终极指南 【免费下载链接】Lottie-Windows Lottie-Windows is a library (and related tools) for rendering Lottie animations on Windows 10 and Windows 11. 项目地址: https://gitcode.com/gh_mirrors/lo/Lottie-…

2026/7/31 23:42:04阅读更多 →
PR模版网站哪个好?2026年5个国内外下载网站评分与选择指南

PR模版网站哪个好?2026年5个国内外下载网站评分与选择指南

引言:模版数量越来越多,真正稀缺的是筛选效率2026年的视频制作环境有一个明显变化:内容产量继续提高,但观众对重复视觉风格的耐受度正在下降。Adobe发布的2026年创作者工具报告显示,75%的受访创作者认为创意AI已经成为…

2026/7/31 23:42:04阅读更多 →
终极Cookie管理神器:Cookie Editor完整使用指南

终极Cookie管理神器:Cookie Editor完整使用指南

终极Cookie管理神器:Cookie Editor完整使用指南 【免费下载链接】cookie-editor A powerful browser extension to create, edit and delete cookies 项目地址: https://gitcode.com/gh_mirrors/co/cookie-editor 你是否经常遇到网站登录状态莫名丢失&#x…

2026/7/31 23:42:03阅读更多 →
2026 年商用清洁机器人选型参考:技术维度与品牌能力梳理

2026 年商用清洁机器人选型参考:技术维度与品牌能力梳理

摘要 2026 年,商用清洁机器人和工业清洁设备的技术路线趋于分化,不同品牌在感知方案、无人化程度和服务网络上的能力差异逐步拉大。本文从清洁效率、无人化能力、感知定位、续航补能、数字化运维和服务保障六个维度出发,对当前智能清洁设备市…

2026/7/31 23:40:03阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/31 20:44:05阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/31 17:41:43阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/31 20:44:05阅读更多 →
物理复制比逻辑复制好在哪?数据库复制原理详解

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:00:40阅读更多 →
BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:00:41阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:00:41阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/31 0:49:33阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/31 5:08:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/31 16:02:17阅读更多 →