python 模块化管理python
如何管理模块
理解模块和包
- 模块 (Module): 一个
.py文件就是一个模块,包含可执行的 Python 代码。 - 包 (Package): 一个包含多个模块的文件夹,文件夹中必须包含一个
__init__.py文件,用来标识这是一个包。
模块导入方式
python
import module_name
from module_name import function_name, variable_name
from module_name import * # 不推荐,可能导致命名空间冲突包导入方式
| 导入方式 | 说明 | 举例 |
|---|---|---|
| 直接导入整个包 | 导入整个包,使用时需要通过包名.模块名.函数名的方式来访问包中的模块和函数。 | import math |
| 从包中导入指定模块 | 导入包中的指定模块,使用时可以直接使用模块中的函数或变量。 | from math import sqrt |
| 从模块中导入指定函数或变量 | 导入包中指定模块的指定函数或变量,使用时可以直接使用函数或变量名。 | from math import sqrt, pi |
| 使用 as 给模块或函数起别名 | 可以给导入的模块或函数起一个别名,方便使用。 | import math as m |
函数导入执行流程
查找模块:
Python 会按照特定的搜索路径来查找要导入的模块
搜索路径通常包括:
- 当前脚本所在的目录
- 环境变量
PYTHONPATH指定的目录 - Python 安装目录下的标准库目录
- 第三方库安装目录
Python 会根据你提供的模块名,在这些路径中逐一查找对应的
.py文件。
加载模块:
- 编译: 如果找到了对应的模块文件,Python 会将其编译成字节码(bytecode),这是一种中间语言,可以被 Python 虚拟机直接执行,从而提高执行效率。
- 执行: Python 会执行模块中的代码,包括变量的定义、函数的定义等。在这个过程中,模块中的所有定义都会被加载到内存中。
创建命名空间:
- 隔离模块: 每个模块都有自己的命名空间,这样可以避免不同模块中的同名变量或函数发生冲突。
- 导入到当前命名空间: 当你成功导入一个模块后,它的名字就会被添加到当前模块的命名空间中。这样,你就可以通过点号(
.)来访问该模块中的属性(包括函数、变量、类等)。
使用导入的函数:
通过点号访问: 你可以通过点号(
.)来访问导入模块中的函数、类或变量。示例:
pythonimport math result = math.sqrt(16) print(result) # 输出 4.0