python标准库有哪些模块,简单总结下。
Python 标准库非常庞大且功能强大,它被誉为“自带电池”,意味着无需安装任何第三方包就能完成大量任务。要全部列举是不现实的,但我可以按照功能分类,介绍一些最重要和最常用的模块及其功能。
核心分类与常用模块
1. 内置函数和内置常量 (builtins
)
-
功能:这是最核心的模块,无需使用
import
导入即可在任何地方使用。它包含了语言最基本的功能。 -
常见成员:
-
函数:
print()
,len()
,input()
,type()
,isinstance()
,range()
,list()
,dict()
,str()
,int()
,open()
等。 -
常量:
True
,False
,None
。
-
2. 系统与操作系统交互
-
os
:提供了大量与操作系统交互的函数。-
功能:文件和目录操作(重命名、删除、创建)、获取系统信息、管理进程环境变量、执行系统命令等。
-
示例:
os.listdir()
,os.path.join()
,os.getcwd()
,os.environ
。
-
-
sys
:提供对 Python 解释器本身相关的变量和函数的访问。-
功能:访问命令行参数 (
sys.argv
)、退出程序 (sys.exit()
)、查看已导入的模块 (sys.modules
)、标准输入/输出流 (sys.stdin
,sys.stdout
,sys.stderr
)。
-
-
pathlib
(Python 3.4+):面向对象的文件系统路径操作,比os.path
更现代和易用。-
功能:路径构造、检查路径属性、文件操作。
-
示例:
Path(‘file.txt’).exists()
,Path(‘dir’) / ‘subdir’ / ‘file.txt’
。
-
3. 数据类型与算法
-
collections
:提供了许多有用的容器数据类型,作为内置类型(list
,dict
,set
,tuple
)的替代和增强。-
namedtuple
: 创建有名字段的元组子类,可通过属性访问。 -
deque
: 双端队列,从两端添加或弹出元素效率很高,适合实现队列和栈。 -
Counter
: 计数器,用于统计可哈希对象的出现次数。 -
defaultdict
: 字典子类,在键不存在时提供默认值。 -
OrderedDict
: 字典子类,记录键的插入顺序(Python 3.7+ 普通dict
也保序,但此类提供额外方法)。
-
-
typing
(Python 3.5+):支持类型提示,使代码更清晰,便于静态类型检查器和IDE进行分析。-
功能:提供
List
,Dict
,Tuple
,Union
,Optional
等类型标注工具。
-
-
heapq
:堆队列算法(优先队列)的实现。 -
bisect
:数组二分查找算法,用于维护已排序的列表而不必每次排序。 -
array
:提供了一种紧凑的数组类型,用于存储基本类型(如整数、浮点数),比列表更高效。
4. 日期与时间
-
datetime
:用于操作日期和时间的类。-
功能:日期 (
date
)、时间 (time
)、日期时间 (datetime
)、时间间隔 (timedelta
)。
-
-
time
:提供与时间相关的各种函数,通常更侧重于时间戳和睡眠。-
功能:获取当前时间戳 (
time.time()
)、线程睡眠 (time.sleep()
)、转换时间格式。
-
5. 数学与数字
-
math
:提供了标准的数学函数和常量。-
功能:三角函数、对数、指数、平方根、向上/向下取整、π (
math.pi
)、e (math.e
)。
-
-
random
:生成各种分布的伪随机数。-
功能:生成随机整数/浮点数 (
random.randint()
,random.random
)、随机序列洗牌 (random.shuffle()
)、随机抽样 (random.sample()
)。
-
-
statistics
(Python 3.4+):计算基本的统计量。-
功能:均值 (
mean
)、中位数 (median
)、方差 (variance
)、标准差 (stdev
)。
-
6. 文件与数据持久化
-
json
:用于编码和解码 JSON 数据。-
功能:将 Python 对象序列化为 JSON 字符串 (
json.dumps()
),将 JSON 字符串反序列化为 Python 对象 (json.loads()
),与文件交互 (json.dump()
,json.load()
)。
-
-
pickle
:Python 专用的序列化模块,可将任意 Python 对象转换为字节流。-
功能:用于 Python 程序间的数据交换和保存程序状态。注意:不要反序列化不受信任的来源。
-
-
sqlite3
:提供了对 SQLite 嵌入式数据库的接口。 -
csv
:用于读写 CSV (逗号分隔值) 文件。
7. 数据压缩与归档
-
gzip
,zipfile
,tarfile
:分别用于处理.gz
,.zip
,.tar.*
格式的压缩和解压缩。
8. 并发与并行
-
threading
:提供线程相关的操作,用于实现多线程。-
注意:由于 GIL 的存在,多线程不适合 CPU 密集型任务,但适合 I/O 密集型任务。
-
-
multiprocessing
:使用子进程而非线程来实现并行,可以绕过 GIL,充分利用多核 CPU。 -
concurrent.futures
(Python 3.2+):提供了线程池和进程池的高级接口,简化了异步执行任务。
9. 网络与互联网
-
socket
:提供了底层的网络接口(BSD socket API),是大多数网络应用的基础。 -
urllib.request
:用于打开和读取 URL(主要是 HTTP)。 -
http.server
:提供了构建基本 HTTP 服务器的类(我们上一个示例就用到了它)。 -
email
:用于解析和生成电子邮件。 -
smtplib
:用于发送电子邮件。
10. 开发与调试工具
-
logging
:提供了灵活的事件日志系统,是print
语句的强大替代品。-
功能:支持不同的日志级别(DEBUG, INFO, WARNING, ERROR, CRITICAL)、输出到不同目标(文件、控制台)、自定义格式。
-
-
unittest
:Python 自带的单元测试框架。 -
doctest
:通过搜索看起来像交互式 Python 会话的文本来测试代码。 -
pdb
:Python 自带的交互式源代码调试器。 -
timeit
:测量小代码片的执行时间。 -
venv
(Python 3.3+):用于创建轻量级的“虚拟环境”,管理项目的依赖包。
11. 其他重要模块
-
re
:正则表达式操作,提供强大的字符串匹配和替换功能。 -
itertools
:提供了用于操作迭代对象的函数,用于创建高效的自定义迭代器。 -
functools
:用于高阶函数(操作或返回其他函数的函数)。-
functools.lru_cache
: 一个装饰器,为函数提供缓存功能(记忆化)。
-
-
enum
(Python 3.4+):用于创建枚举类型。 -
argparse
:用于编写用户友好的命令行接口,解析命令行参数。 -
configparser
:用于读写 Windows 风格的.ini
配置文件。
总结
类别 | 核心模块 | 主要功能 |
---|---|---|
系统交互 | os , sys , pathlib | 文件操作、获取系统信息、命令行参数 |
数据结构 | collections , typing | 增强的容器类型、类型提示 |
日期时间 | datetime , time | 日期时间处理、睡眠 |
数学计算 | math , random , statistics | 数学函数、随机数、统计计算 |
数据持久化 | json , pickle , sqlite3 | JSON/对象序列化、数据库操作 |
并发编程 | threading , multiprocessing | 多线程、多进程 |
网络通信 | socket , urllib | 底层网络、HTTP 请求 |
开发工具 | logging , unittest , pdb | 日志记录、单元测试、调试 |
文本处理 | re | 正则表达式匹配 |
要探索完整的标准库列表,最权威的来源是 Python 官方文档:
https://docs.python.org/3/library/index.html