模块Module

模块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":)