第七天:
“模块”知识点速览
一、模块的概念(What is a Module?)
本质:一个
.py文件就是一个模块(Module),内部可包含函数、类、变量等 Python 代码。层级结构:函数 → 类 → 模块 → 包。
作用:代码解耦与复用、提高可维护性、避免命名冲突。
分类:标准库模块、自定义模块、第三方模块(PyPI)。
二、模块的导入使用(Importing Modules)
整体导入:使用
import module_name导入整个模块,调用时需带模块名前缀,如math.pi。精确导入:使用
from module_name import object_name直接导入特定函数或变量,使用时无需模块名前缀(如from math import pi)。风险:可能会覆盖当前命名空间中的同名变量或函数。
全部导入:使用
from module_name import *。不推荐在生产代码中使用,易引发命名冲突、污染命名空间。导入别名:使用
import module_name as alias或from module_name import object_name as alias简化调用或规避名称冲突(如import datetime as dt)。查找顺序:首先在当前脚本所在目录查找,其次查找内置模块及系统路径。
三、字节码编译(.pyc 文件)
自动编译:首次导入时,Python 会自动将
.py文件编译为字节码.pyc文件(存放在__pycache__),以提高后续加载速度。
四、主模块与 __name__ 机制
内置属性:
__name__在直接运行该文件时值为'__main__';作为模块被导入时值为模块名。常用写法:
if __name__ == '__main__':用于编写模块单元测试或指定程序入口,防止代码在被其他文件导入时误执行。
五、模块初始化与单例模式(Module Initialization)
初始化:模块在首次被导入时会执行一次初始化代码,同一个模块多次 import 也只会执行一次。
单例模式:模块内部的局部/全局状态在进程内相当于单例(Singleton)。
六、扩展模块搜索路径(Extending Load Path)
环境变量:可通过环境变量
PYTHONPATH指定扩展目录。动态添加:可在代码中动态添加:
import sys; sys.path.append("/path/to/dir")。
七、模块自省与工具(Introspection)
dir():使用dir(module_name)列出模块内的所有方法与属性。help():使用help(module_name)查看文档。
八、包(Packages)
定义:包是包含
__init__.py文件的文件夹,用于按目录层级组织和管理多个子模块。导入方式:支持通过
import 包名.模块名或from 包名 import 模块名导入。
九、作用域与私有化规范(Privacy & __all__)
私有约定:以单下划线
_开头的变量或函数(如_private_func)约定为私有,不建议外部直接调用。import *行为:默认不会导入以_开头的私有属性。__all__列表:可通过模块内的__all__ = [...]显式指定from module_name import *时暴露的接口。
十、核心常用标准库(Standard Library)
math:数学运算。random:随机数。datetime:日期时间。json:数据序列化。os/sys:系统与环境交互。
评论