模块Modul是包含Python代码的文件(以**.py** 为扩展名),用于组织代码,实现功能封装与复用
模块可以包含:
函数,类,变量等代码实体;
可执行的测试逻辑(通过 if name == "main":)实现
模块的导入方式
1.基础导入
import module_name #导入整个模块
from module_name import function/class #导入特定函数/类
from module_name import * #导入所有公开对象(慎用)
2.别名导入
import numpy as np # 为模块取别名
from math import sqrt as square_root # 为函数取别名
3.相对导入
在包内部使用(用**.**表示层级)
from .submodule import func # 导入当前包的子模块
from .. import parent_module # 导入父包的模块
模块的查找路径
Python通过以下顺序查找模块:
1.当前目录;
2.PYTHONPATH环境变量指定的路径;
3.Python标准路径库;
4.第三方库安装路径(如site-packages)。
查看路径
import sys
print(sys.path) # 输出模块搜索路径列表
模块的属性与方法
1._name_属性
当模块作为主程序运行时,_name_的值为"main";
当模块被导入时,_name_的值为模块文件名(不带 .py)。
示例:


2.dir()函数
列出模块的所有属性和方法:


3.__all__变量
控制 from module import * 导入的内容

模块的常用操作
1.动态导入模块
使用 importlib 库实现动态导入:


2.重新加载模块
修改模块代码后,用 importlib.reload()重新加载,示例:
import my_module
import importlib
importlib.reload(my_module) # 重新加载模块
3.包与子模块
包:包含__init__.py文件的目录;
子模块:包内的.py文件。
示例结构:
my_package/
├── __init__.py # 包初始化文件
├── module1.py
└── subpackage/
├── __init__.py
└── module2.pyd
导入子模块:
from my_package.module1 import func # 导入包内模块
from my_package.subpackage.module2 import ClassB # 导入子包模块
第三方模块的安装与使用
1.安装:
pip install package_name # 通过pip安装
2.使用示例(以requests库为例):
import requests
response = requests.get("https://api.example.com/data")
print(response.json())
实践
1.模块命名:
使用小写字母和下划线(如 database.py);
避免与标准库模块同名(如 json.py会导致冲突)。
2.循环导入:
避免模块A导入模块B,模块B又导入模块A;
解决方案:将导入语句放在函数内部,或重构代码结构。
3.版本管路:
使用 requirements.txt文件记录依赖及版本
示例:
requests==2.26.0
numpy>=1.19.0
4.测试模块
在模块末尾添加测试代码(通过 if name == "main":)

