Python训练营-Day30-模块和库的导入
官方库(Python标准库)的导入方式主要有以下三种:
1.完全导入
import math # 导入整个math模块
print(math.sqrt(16)) # 调用时需加模块前缀[1,3,5](@ref)
- 适用场景:频繁使用库中多个功能时,避免命名冲突
- 内存占用:较高(导入整个模块)
2.精确导入(指定功能)
from math import sqrt # 仅导入sqrt函数
print(sqrt(16)) # 直接调用,无需模块前缀[1,3,5](@ref)
适用场景:仅需少量功能时,代码更简洁
注意:可能引发命名冲突(如与本地变量同名)
3.别名导入
import numpy as np # 为numpy设置别名np
print(np.array([1, 2, 3])) # 通过别名调用[1,3,5](@ref)
适用场景:长模块名简化(如pandas as pd
)或避免命名冲突
导入自定义库/模块的方式
自定义模块的导入需考虑路径管理,常见方法如下
1.同目录导入
import mymodule # 直接导入同级目录下的mymodule.py[1,7,10](@ref)
前提:模块文件(如mymodule.py
)与当前脚本在同一目录
2. 子目录导入(包形式)
from subdir import utils # 导入子目录subdir中的utils模块[4,10](@ref)
要求:子目录需包含__init__.py
文件(可为空),标识为Python包
3.跨目录导入(动态路径添加)
import sys
sys.path.append('/path/to/module') # 临时添加模块路径
import mymodule # 导入非默认路径下的模块[2,7,10](@ref)
替代方案:
- 设置
PYTHONPATH
环境变量 - 使用
pathlib
动态获取父目录路径
导入库/模块的核心逻辑:路径查找机制
Python解释器按以下顺序查找模块:
- 当前脚本所在目录
PYTHONPATH
环境变量指定目录- Python标准库目录(如
Lib/
) - 第三方库目录(如
site-packages/
)
路径调试技巧:
import sys
print(sys.path) # 查看当前搜索路径import os
print(os.path.dirname(os.path.abspath(__file__))) # 获取脚本绝对路径
四、特殊场景处理
动态导入
import importlib
module = importlib.import_module('module_name')
重新加载模块
import importlib
importlib.reload(module) # 强制刷新已修改的模块
命名空间包(Python 3.3+)
无需__init__.py
文件即可实现跨目录模块组织
最佳实践建议
-
导入顺序规范:
- 标准库 → 第三方库 → 自定义模块
- 每组之间用空行分隔
-
路径管理:
- 优先使用相对路径(包内导入)
- 跨项目调用建议通过
setup.py
安装为可编辑模式
-
性能优化:
- 避免
from module import *
(易引发命名冲突) - 高频调用函数可赋值给局部变量
- 避免
大型项目结构:
project/
├── main.py
├── core/ # 核心功能包
│ ├── __init__.py
│ └── utils.py
└── libs/ # 第三方库备份
└── custom_lib/
@浙大疏锦行