一、核心标准库分类与核心用途
我将这些库按功能维度分类,并说明每个库的核心价值(新手优先掌握标⭐的):
1. 命令行与配置处理
| 库名 |
核心用途 |
新手示例 |
⭐argparse |
专业的命令行参数解析(替代 getopt) |
定义脚本接收的参数、默认值、帮助信息 |
getopt |
兼容 Unix 风格的简单参数解析(偏底层) |
解析 -h/--help 这类简单参数 |
⭐configparser |
解析 INI 格式的配置文件(如 config.ini) |
读取 / 写入 [section] key=value 配置 |
2. 数据类型与数学计算
| 库名 |
核心用途 |
新手示例 |
⭐math |
基础数学运算(三角函数、对数、常量 π/e) |
计算平方根 math.sqrt(16)、圆周率 math.pi |
decimal |
高精度十进制运算(避免浮点数精度丢失) |
精准计算 Decimal('0.1') + Decimal('0.2') |
fractions |
分数运算(分子 / 分母形式) |
Fraction(1, 3) + Fraction(1, 6) = Fraction(1, 2) |
operator |
内置运算符的函数版(如 operator.add 替代 +) |
批量运算、自定义排序时简化代码 |
heapq |
堆排序算法(优先队列) |
快速获取 Top N 元素 |
uuid |
生成唯一标识符(UUID) |
分布式系统中标识资源 |
base64 |
Base64 编解码 |
处理二进制数据的文本传输(如接口加密) |
zlib |
数据压缩 / 解压缩 |
减小文件 / 数据传输体积 |
3. 时间与日期
| 库名 |
核心用途 |
新手示例 |
⭐datetime |
日期时间处理(核心库) |
解析时间、计算时间差、格式化输出 |
calendar |
日历相关操作 |
生成月历、判断闰年、获取某周的日期 |
4. 文件与路径处理
| 库名 |
核心用途 |
新手示例 |
⭐os |
操作系统交互(文件、进程、环境变量) |
创建目录 os.mkdir、执行系统命令 os.system |
⭐os.path |
路径字符串处理(老版) |
拼接路径 os.path.join、判断文件存在 os.path.exists |
⭐pathlib |
面向对象的路径处理(新版推荐) |
Path('/a/b').joinpath('c.txt') 更直观 |
glob/fnmatch |
文件通配符匹配 |
查找所有 .txt 文件 glob.glob('*.txt') |
tarfile |
压缩 / 解压 tar 包 |
处理 .tar.gz 格式文件 |
zipfile |
压缩 / 解压 zip 包 |
创建 / 读取 zip 文件 |
mimetypes |
判断文件 MIME 类型 |
识别 txt/jpg/pdf 等文件类型 |
5. 数据序列化与 IO
| 库名 |
核心用途 |
新手示例 |
⭐json |
JSON 编解码(最常用) |
接口数据传输、配置文件读写 |
pickle |
Python 对象序列化(仅限 Python) |
保存 / 加载复杂对象(如类实例) |
⭐io |
内存 IO(模拟文件操作) |
无需创建物理文件,直接操作内存中的数据 |
6. 并发与异步
| 库名 |
核心用途 |
新手示例 |
⭐asyncio |
异步 IO(单线程并发) |
高 IO 场景(网络请求、文件读写)提升效率 |
threading |
多线程(IO 密集型任务) |
同时处理多个网络请求 |
multiprocessing |
多进程(CPU 密集型任务) |
利用多核 CPU 计算 |
concurrent.futures |
高级并发接口(ThreadPool/ProcessPoolExecutor) |
简化线程 / 进程池使用 |
contextvars |
异步 / 多线程中的上下文变量 |
替代全局变量,安全传递上下文 |
7. 网络编程
| 库名 |
核心用途 |
新手示例 |
⭐socket |
底层网络编程(TCP/UDP) |
实现简单的客户端 / 服务器 |
ssl |
加密套接字(HTTPS/SSL 通信) |
为 socket 添加 TLS/SSL 加密 |
http |
HTTP 协议相关(客户端 / 服务器) |
简单 HTTP 请求、搭建简易 HTTP 服务 |
urllib |
URL 处理与 HTTP 请求(内置) |
发送 GET/POST 请求(新手可先用 requests 库) |
imaplib |
IMAP 邮件协议 |
读取邮件服务器中的邮件 |
hmac |
哈希消息认证(接口签名) |
接口防篡改、身份验证 |
8. 调试与日志
| 库名 |
核心用途 |
新手示例 |
⭐logging/logging.handlers |
日志记录(替代 print) |
输出不同级别日志、保存日志到文件 / 远程 |
pdb |
内置调试器 |
断点调试 pdb.set_trace() |
bdb |
调试器框架(扩展 pdb) |
自定义调试工具 |
inspect |
检查运行时对象(函数、类) |
获取函数参数、类的方法列表 |
faulthandler |
捕获程序崩溃信息 |
定位段错误、死锁等底层问题 |
sys |
系统交互(解释器参数、标准 IO、异常) |
获取命令行参数 sys.argv、退出程序 sys.exit() |
sys.monitoring |
监控 Python 解释器行为 |
追踪函数调用、代码执行 |
9. 文本处理
| 库名 |
核心用途 |
新手示例 |
⭐re |
正则表达式(核心) |
匹配、替换、提取文本中的特定内容 |
difflib |
文本差异对比 |
比较两个文件的内容差异 |
textwrap |
文本换行、缩进 |
格式化长文本输出 |
unicodedata |
Unicode 字符处理 |
转换字符大小写、判断字符类型 |
linecache |
读取文件指定行 |
快速获取大文件的某一行(无需全读) |
10. 高级 / 特殊用途
| 库名 |
核心用途 |
适用场景 |
ast |
抽象语法树(解析 Python 代码) |
代码分析、静态检查、自定义解释器 |
ctypes |
调用 C 语言编写的动态库 |
与 C 扩展交互 |
curses |
终端图形界面(无 GUI) |
编写终端交互程序 |
errno |
系统错误码定义 |
处理系统调用的错误(如文件不存在) |
functools |
函数工具(装饰器、偏函数等) |
@lru_cache 缓存、partial 固定参数 |
getpass |
无回显输入密码 |
命令行输入密码时隐藏内容 |
graphlib |
图算法(拓扑排序) |
处理依赖关系(如任务调度) |
pydoc |
生成文档 / 查看帮助 |
自动生成 API 文档 |
dis |
反汇编 Python 字节码 |
分析代码执行效率 |
symtable |
符号表分析 |
静态代码分析 |
sysconfig |
Python 编译 / 安装配置 |
查看解释器的编译参数 |
turtle |
海龟绘图(入门可视化) |
教新手编程的图形化工具 |
tkinter |
GUI 编程(内置) |
简单桌面应用(如计算器、记事本) |
webbrowser |
调用系统浏览器 |
打开指定 URL |
types |
内置类型的底层定义 |
动态创建类 / 函数 |
typing |
类型注解(PEP484) |
提升代码可读性、静态检查(如 List[int]) |
11. 测试
| 库名 |
核心用途 |
新手示例 |
⭐unittest |
单元测试框架(内置) |
编写测试用例、断言、批量执行测试 |
二、性能优化核心思路
结合你列出的库,性能优化可从以下维度入手:
- 并发 / 异步优化
- IO 密集型(网络请求、文件读写):用
asyncio 异步编程,替代同步阻塞;或 threading/concurrent.futures.ThreadPoolExecutor 多线程。
- CPU 密集型:用
multiprocessing/concurrent.futures.ProcessPoolExecutor 多进程(规避 GIL 锁)。
- 内存与资源优化
- 用
gc 模块手动管理垃圾回收(谨慎使用,优先优化代码);
- 用
io 模块的内存 IO(BytesIO/StringIO)减少磁盘 IO;
- 用
zlib 压缩大数据,减少传输 / 存储开销。
- 代码层面优化
- 用
functools.lru_cache 缓存高频调用的函数结果;
- 用
operator 替代自定义 lambda,提升执行效率;
- 用
pathlib 替代 os.path(路径处理更高效且易读);
- 用
pdb/inspect 定位性能瓶颈,而非盲目优化。
总结
- 新手优先级:先掌握
argparse(命令行)、datetime(时间)、os/pathlib(文件)、json(数据)、re(正则)、logging(日志)、asyncio/concurrent.futures(并发)这些高频库。
- 性能优化核心:IO 密集型用异步 / 多线程,CPU 密集型用多进程,先定位瓶颈再优化,优先使用内置库而非自定义实现。
- 路径处理推荐:新代码优先用
pathlib(面向对象),替代老的 os.path,代码更易读且不易出错。
如果你想深入了解某个具体库的使用示例(比如 asyncio 异步爬取、configparser 读取配置),可以告诉我,我会补充对应的代码和解释。