三、自定义模块学习笔记
2026-02-21
Python基础
type
Post
status
Published
date
Feb 21, 2026
slug
python-custom-module-notes-3
summary
我可以把代码按功能拆分,就像把房间收拾整洁,每个东西都有自己的位置,找起来特别方便!
tags
category
Python基础
icon
password
💡 学习感悟:我可以把代码按功能拆分,就像把房间收拾整洁,每个东西都有自己的位置,找起来特别方便!
1. 创建自定义模块
1.1 模块就是 Python 文件
📝 我的理解:创建模块就像是写工具说明书——把工具(函数)分类整理好,贴上标签(文档字符串),方便别人使用。
1.2 模块文档字符串
📝 我的理解:文档字符串就像是产品说明书——告诉别人这个模块是干什么的,怎么用。
2. 使用自定义模块
2.1 导入同级目录模块
2.2 from 导入
📝 我的理解:使用自定义模块就像是借用朋友的工具——可以整箱借(import 模块),也可以只借某件工具(from import)。
3. 模块的组织结构
3.1 模块变量和常量
3.2 模块函数组织
📝 我的理解:组织模块就像是整理工具箱——常量是标签,函数是工具,分类放好,方便取用。
3.3 模块中的类
📝 我的理解:模块中的类就像是专业设备——不仅提供功能,还能保持状态(如计算器的当前结果)。
4. 模块的 __all__ 变量
4.1 控制导出内容
📝 我的理解:__all__就像是白名单——告诉 Python,当别人用from xxx import *时,只允许导出这些内容。
4.2 私有成员
📝 我的理解:单下划线_xxx就像是内部人员通道——不是不能用,但是约定俗成不直接用。
5. 模块的初始化代码
5.1 模块级初始化
📝 我的理解:模块级代码就像是开机自检——导入模块时自动执行,做准备工作。
5.2 延迟初始化
📝 我的理解:延迟初始化就像是按需加载——不用的时候不占用资源,第一次用的时候才准备。
6. 踩坑记录
6.1 模块名冲突
⚠️ 踩坑:不要把自己的模块命名为标准库模块名(如random.py,json.py,test.py)!
6.2 修改模块不生效
⚠️ 踩坑:修改模块文件后,已导入的模块不会自动更新,需要reload或重启解释器!
6.3 循环导入
⚠️ 踩坑:A 导入 B,B 又导入 A,会导致ImportError!用延迟导入或重构代码解决。
7. 核心知识点整理
7.1 模块开发规范
7.2 命名规范
类型 | 规范 | 示例 |
模块名 | 小写 + 下划线 | my_module.py |
常量 | 大写 + 下划线 | MAX_SIZE = 100 |
函数 | 小写 + 下划线 | def my_func(): |
类 | 大驼峰 | class MyClass: |
私有成员 | 单下划线开头 | _helper() |
7.3 模块开发 checklist
模块名不与标准库冲突
添加模块文档字符串
使用
__all__ 控制导出(可选)常量用大写命名
私有函数用单下划线开头
添加
if __name__ == "__main__": 测试代码避免循环导入
Loading...
