The Python Standard Library
善工必先利其器
介绍
标准库意味着由官方维护,会随着语言的演变而演变;因而值得大下功夫,好好琢磨。
标准库非常庞大,所提供的组件涉及范围十分广泛。该库包含了多个内置模块 (以C编写),Python 程序员必须依靠它们来实现系统级功能,例如文件 I/O;此外还有大量以Python编写的模块,提供了日常编程中许多问题的标准解决方案。
概述
本文将罗列出这些标准库,但鉴于数量众多、功能复杂。
因此,先根据模块所针对的目标人群进行分类:入门级、高手级、骨灰级;之后根据其处理的问题进行大致分类(部分重叠)。
但出于方便,单独列出一节简述常用标准库的功能。
常用标准库
完整目录
通用
这部分单独列出各个阶段玩家都会使用到的一些工具。
系统工具
该部分主要用来支持调用操作系统的一些标准库。
系统平台无关(通用操作系统服务)
本章中描述的各模块提供了在(几乎)所有的操作系统上可用的操作系统特性的接口,例如文件和时钟。这些接口通常以 Unix 或 C 接口为参照对象设计,不过在大多数其他系统上也可用。
LIBRARY | DESCRIPTION |
---|---|
os |
操作系统接口模块 |
io |
处理流的核心工具 |
time |
时间的访问和转换 |
argparse |
命令行选项、参数和子命令解析器 |
getopt |
C风格的命令行解析器 |
logging |
Python 的日志记录工具 |
logging.config |
日志记录配置 |
logging.handlers |
日志处理器 |
getpass |
便携式密码输入工具 |
curses |
终端字符单元显示的处理 |
platform |
获取底层平台的标识数据 |
errno |
标准errno系统符号 |
ctypes |
Python 的外部函数库 |
系统平台相关
Windows系统相关模块
Unix专有模块
入门级
解释器相关
内置函数
Python 解释器内置了很多函数和类型,您可以在任何时候使用它们;具体目录参见https://docs.python.org/zh-cn/3/library/functions.html。
内置常量
有少数的常量存在于内置命名空间中。它们是:
False
True
None
NotImplemented
-
Ellipsis
,等同于...
__debug__
注解:变量名None
,False
,True
和 __debug__
无法重新赋值(赋值给它们,即使是属性名,将引发SyntaxError
),所以它们可以被认为是“真正的”常数。
site
模块(在启动期间自动导入,除非给出 -S 命令行选项)将几个常量添加到内置命名空间。 它们对交互式解释器shell
很有用,并且不应在程序中使用。
quit(code=None)
-
exit(code=None)
:当打印此对象时,会打印出一条消息,例如“Use quit() or Ctrl-D (i.e. EOF) to exit”,当调用此对象时,将使用指定的退出代码来引发 SystemExit。 copyright
-
credits
:打印或调用的对象分别打印版权或作者的文本。 -
license
:当打印此对象时,会打印出一条消息“Type license() to see the full license text”,当调用此对象时,将以分页形式显示完整的许可证文本(每次显示一屏)。
内置类型
主要内置类型有数字、序列、映射、类、实例和异常。
有些多项集类是可变的。它们用于添加、移除或重排其成员的方法将原地执行,并不返回特定的项,绝对不会返回多项集实例自身而是返回None
。
有些操作受多种对象类型的支持;特别地,实际上所有对象都可以被比较、检测逻辑值,以及转换为字符串(使用repr()
函数或略有差异的str()
函数)。后一个函数是在对象由print()
函数输出时被隐式地调用的。
内置异常
在Python中,所有异常必须为一个派生自BaseException
的类的实例。在带有提及一个特定类的except
子句的try
语句中,该子句也会处理任何派生自该类的异常类(但不处理它所派生出的异常类)。 通过子类化创建的两个不相关异常类永远是不等效的,既使它们具有相同的名称。
数据结构
本章节描述的模块提供了一系列专门的数据类型例如日期与时间、固定类型的数组、堆队列、同步队列与集合等。
Python同样提供一些内置的数据类型,特别的,dict
,list
,set
与frozenset
以及tuple
。 str
类通常指Unicode 字符串,并且bytes
通常指二进制数据。
LIBRARY | DESCRIPTION |
---|---|
datetime |
基本的日期和时间类型 |
calendar |
日历相关函数 |
collections |
容器数据类型 |
collections.abc |
容器的抽象基类 |
heapq |
堆队列算法 |
bisect |
数组二分查找算法 |
array |
处理数值类型高效的数组 |
weakref |
弱引用 |
types |
动态创建类型,为内建类型提供指代 |
copy |
浅层 (shallow) 和深层 (deep) 复制操作 |
pprint |
数据美化输出 |
reprlib |
repr() 的可替换实现 |
enum |
对枚举(enumerations)进行支持 |
数学和数学模块
本章介绍的模块提供与数字和数学相关的函数和数据类型。numbers
模块定义了数字类型的抽象层次结构。 math
和cmath
模块包含浮点数和复数的各种数学函数。decimal
模块支持使用任意精度算术的十进制数的精确表示。
LIBRARY | DESCRIPTION |
---|---|
numbers |
数字的抽象基类 |
math |
数学函数 |
decimal |
十进制定点和浮点运算 |
fractions |
分数 |
random |
生成伪随机数 |
statistics |
数学统计函数 |
文件和目录访问
本章中描述的模块处理磁盘文件和目录。 例如,有一些模块用于读取文件的属性,以可移植的方式操作路径以及创建临时文件。
LIBRARY | DESCRIPTION |
---|---|
pathlib |
面向对象的文件系统路径 |
os.path |
常见路径操作 |
fileinput |
提供多个输入流的迭代功能 |
stat |
解释stat() 的结果 |
filecmp |
文件及目录的比较 |
tempfile |
产生临时文件及文件夹 |
glob |
Unix类型路径名扩展 |
fnmatch |
Unix类型文件名匹配 |
linecache |
随机访问文本行 |
shutil |
高层次文件操作接口 |
macpath |
Mac OS 9 路径操作函数 |
更多:
模块 os:操作系统接口,包括处理比Python文件对象更低级别文件的功能。
模块 io:Python的内置 I/O 库,包括抽象类和一些具体的类,如文件 I/O 。
内置函数 open():使用 Python 打开文件进行读写的标准方法。
高手级
编程范式
函数式编程模块
本章里描述的模块提供了函数和类,以支持函数式编程风格和在可调用对象上的通用操作。
LIBRARY | DESCRIPTION |
---|---|
itertools |
为高效循环而创建迭代器的函数 |
functools |
高阶函数和可调用对象上的操作 |
operator |
标准运算符替代函数 |
并发执行
本章中描述的模块支持并发执行代码。 适当的工具选择取决于要执行的任务(CPU密集型或IO密集型)和偏好的开发风格(事件驱动的协作式多任务或抢占式多任务处理)。
LIBRARY | DESCRIPTION |
---|---|
threading |
基于线程的并行 |
multiprocessing |
基于进程的并行 |
concurrent |
启动并行任 |
subprocess |
子进程管理 |
sched |
事件调度器 |
queue |
一个同步的队列类 |
_thread |
底层多线程 API |
_dummy_thread |
_thread 的替代模块 |
dummy_threading |
可直接替代 threading 模块。 |
开发生命周期相关
该部分主要是用来支撑软件工程的某些生命周期所需的功能。
开发工具
本章中描述的各模块可帮你编写 Python 程序。例如,pydoc
模块接受一个模块并根据该模块的内容来生成文档。doctest
和 unittest
这两个模块包含了用于编写单元测试的框架,并可用于自动测试所编写的代码,验证预期的输出是否产生。2to3
程序能够将 Python 2.x 源代码翻译成有效的 Python 3.x 源代码。
LIBRARY | DESCRIPTION |
---|---|
typing |
类型标注支持 |
pydoc |
文档生成器及在线求助系统 |
doctest |
测试交互性的Python示例 |
unittest |
单元测试框架 |
unittest.mock |
mock对象库 |
`2to3 - 自动将 Python 2 代码转为 Python 3 代码 | |
test |
支持 Python 回归测试 |
test.support |
Python 测试组曲的实用工具 |
test.support.script_helper |
Python执行测试的使用工具 |
调试和分析
这些库可以帮助你进行Python开发:调试器使你能够逐步执行代码,分析堆栈帧并设置断点等,而分析器运行代码并为你提供执行时间的详细分类,从而使你能够找出你程序中的瓶颈。
LIBRARY | DESCRIPTION |
---|---|
bdb |
debugger框架 |
faulthandler |
转存 Python 错误回溯 |
pdb |
Python的调试器 |
timeit |
测量小代码片段的执行时间 |
trace |
追溯 Python 语句执行情况 |
tracemalloc |
跟踪内存分配 |
软件打包和分发
这些库可帮助你发布和安装 Python 软件。
LIBRARY | DESCRIPTION |
---|---|
distutils |
构建和安装 Python 模块 |
ensurepip |
引导 pip 安装器 |
venv |
创建虚拟环境 |
zipapp |
管理可执行的 Python zip压缩包 |
骨灰级
Python运行时服务
本章里描述的模块提供了和Python解释器及其环境交互相关的广泛服务。
LIBRARY | DESCRIPTION |
---|---|
sys |
系统相关的参数和函数 |
sysconfig |
访问 Python's 配置信息 |
builtins |
内建对象 |
__main__ |
顶层脚本环境 |
warnings |
警告控制 |
dataclasses |
数据类 |
contextlib |
with语句上下文的实用工具 |
abc |
抽象基类 |
atexit |
退出处理器 |
traceback |
打印或检索堆栈回溯 |
__future__ |
Future 语句定义 |
gc |
垃圾回收器接口 |
inspect |
检查对象 |
site |
site配置钩子 |
自定义Python解释器
本章中描述的模块允许编写类似于 Python 的交互式解释器的接口。
LIBRARY | DESCRIPTION |
---|---|
code |
解释器基类 |
codeop |
编译Python代码 |
导入模块
本章中介绍的模块提供了导入其他Python模块和挂钩以自定义导入过程的新方法。
LIBRARY | DESCRIPTION |
---|---|
zipimport |
从zip压缩包中导入模块 |
pkgutil |
包扩展的实用工具 |
modulefinder |
查找脚本使用的模块 |
runpy |
定位与执行 Python 模块 |
importlib |
import 的实现 |
Python语言服务
Python 提供了许多模块来帮助使用 Python 语言。 这些模块支持标记化、解析、语法分析、字节码反汇编以及各种其他工具。
LIBRARY | DESCRIPTION |
---|---|
parser |
访问 Python 解析树 |
ast |
抽象语法树 |
symtable |
访问 编译器的符号表 |
symbol |
与 Python 解析树一起使用的常量 |
token |
与Python解析树一起使用的常量 |
keyword |
检验Python关键字 |
tokenize |
Python源码的Tokenizer |
tabnanny |
模糊缩进检测 |
pyclbr |
Python 类浏览器的支撑包 |
py_compile |
编译 Python 源码 |
compileall |
二进制编码 Python库 |
dis |
Python 字节码反汇编器 |
pickletools |
pickle开发者的工具箱 |
任务相关
该部分罗列的是与需求域相关的一些标准库。
文字处理
文本处理服务
本小节介绍的模块提供了广泛的字符串操作和其他文本处理服务。
在二进制数据服务之下描述的codecs
模块也与文本处理高度相关。此外也请参阅Python内置字符串类型的文档文本序列类型 -- str
。
LIBRARY | DESCRIPTION |
---|---|
string |
常见的字符串操作 |
re |
正则表达式操作 |
difflib |
计算差异的辅助工具 |
textwrap |
文本自动换行与填充 |
unicodedata |
Unicode 数据库 |
stringprep |
因特网字符串预备 |
readline |
GNU readline 接口 |
rlcompleter |
GNU readline 的补全函数 |
数据处理
文件格式
本章中描述的模块解析各种不是标记语言且与电子邮件无关的杂项文件格式。
LIBRARY | DESCRIPTION |
---|---|
csv |
CSV 文件读写 |
configparser |
Configuration file parser |
netrc |
netrc file processing |
xdrlib |
Encode and decode XDR data |
plistlib |
Generate and parse Mac OS X .plist files |
数据压缩和存档
本章中描述的模块支持 zlib、gzip、bzip2 和 lzma 数据压缩算法,以及创建 ZIP 和 tar 格式的归档文件。参见由 shutil 模块提供的 Archiving operations 。
LIBRARY | DESCRIPTION |
---|---|
zlib |
与 gzip 兼容的压缩 |
gzip |
对 gzip 格式的支持 |
bz2 |
对 bzip2 压缩算法的支持 |
lzma |
用 LZMA 算法压缩 |
zipfile |
使用ZIP存档 |
tarfile |
读写tar归档文件 |
结构化标记处理工具
Python 支持各种模块,以处理各种形式的结构化数据标记。 这包括使用标准通用标记语言(SGML)和超文本标记语言(HTML)的模块,以及使用可扩展标记语言(XML)的几个接口。
LIBRARY | DESCRIPTION |
---|---|
html |
超文本标记语言支持 |
html.parser |
简单的 HTML 和 XHTML 解析器 |
html.entities |
HTML 一般实体的定义 |
xml.etree.ElementTree |
The ElementTree XML API |
xml.dom |
The Document Object Model API |
xml.dom.minidom |
最小 DOM 实现 |
xml.dom.pulldom |
支持构建部分 DOM 树 |
xml.sax |
SAX2 解析器 |
xml.sax.handler |
SAX 处理器的基类 |
xml.sax.saxutils |
SAX 实用工具 |
xml.sax.xmlreader |
XML 解析器接口 |
xml.parsers.expat |
实用 Expat 实现的快速XML解析 |
二进制数据服务
本章介绍的模块提供了一些操作二进制数据的基本服务操作。 有关二进制数据的其他操作,特别是与文件格式和网络协议有关的操作,将在相关章节中介绍。
下面描述的一些库文本处理服务也可以使用ASCII兼容的二进制格式(例如re
)或所有二进制数据(例如difflib
)。
另外,请参阅Python的内置二进制数据类型的文档二进制序列类型 --- bytes
, bytearray
, memoryview
。
LIBRARY | DESCRIPTION |
---|---|
struct |
将字节串解读为打包的二进制数据 |
codecs |
编解码器注册和相关基类 |
数据持久化
本章中描述的模块支持在磁盘上以持久形式存储 Python 数据。pickle
和marshal
模块可以将许多 Python 数据类型转换为字节流,然后从字节中重新创建对象。各种与 DBM 相关的模块支持一系列基于散列的文件格式,这些格式存储字符串到其他字符串的映射。
LIBRARY | DESCRIPTION |
---|---|
pickle |
Python 对象序列化 |
copyreg |
pickle 支撑函数的注册表 |
shelve |
Python 对象持久化 |
marshal |
内部 Python 对象序列化 |
dbm |
UNIX "数据库"的接口 |
sqlite3 |
SQLite 数据库 DB-API 2.0 接口模块 |
网络开发
网络和进程间通信
本章介绍的模块提供了网络和进程间通信的机制。
某些模块仅适用于同一台机器上的两个进程,例如signal
和mmap
。其他模块支持两个或多个进程可用于跨机器通信的网络协议。
LIBRARY | DESCRIPTION |
---|---|
asyncio |
异步 I/O |
socket |
底层网络接口 |
ssl |
socket对象的TLS/SSL包装器 |
select |
等待 I/O 完成 |
selectors |
高级 I/O 复用库 |
asyncore |
异步socket处理器 |
asynchat |
异步 socket 指令/响应 处理器 |
signal |
设置异步事件处理程序 |
mmap |
内存映射文件支持 |
互联网数据处理
本章介绍了支持处理互联网上常用数据格式的模块。
LIBRARY | DESCRIPTION |
---|---|
email |
电子邮件与 MIME 处理包 |
json |
JSON 编码和解码器 |
mailcap |
处理Mailcap文件 file handling |
mailbox |
管理不同格式的邮箱 |
mimetypes |
将文件名映射为MIME类型 |
base64 |
Base16, Base32, Base64, Base85 数据编码 |
binhex |
对binhex4文件进行编码和解码 |
binascii |
二进制和 ASCII 码互转 |
quopri |
MIME 可打印字符引用编码数据(MIME quoted-printable data)的解码与编码 |
uu |
uuencode格式数据的编码与解码 |
互联网协议和支持
本章介绍的模块实现了互联网协议并支持相关技术。 它们都是用 Python 实现的。 这些模块中的大多数都需要存在依赖于系统的模块 socket ,目前大多数流行平台都支持它。
LIBRARY | DESCRIPTION |
---|---|
webbrowser |
方便的Web浏览器控制器 |
cgi |
支持Common Gateway Interface |
cgitb |
CGI脚本的追踪管理器 |
wsgiref |
WSGI实用工具及参考实现 |
urllib |
URL 处理模块 |
urllib.request |
用于打开 URL 的可扩展库 |
urllib.response |
urllib 使用的 Response 类 |
urllib.parse |
将 URLs 解析为各组件 |
urllib.error |
urllib.request 引发的异常类 |
urllib.robotparser |
robots.txt 语法分析程序 |
http.client |
HTTP 协议客户端 |
ftplib |
FTP 协议客户端 |
poplib |
POP3 协议客户端 |
imaplib |
IMAP4 协议客户端 |
nntplib |
NNTP 协议客户端 |
smtplib |
SMTP 协议客户端 |
smtpd |
SMTP 服务端 |
telnetlib |
Telnet 客户端 |
uuid |
UUID(RFC 4122) 对象 |
socketserver |
网络服务器框架 |
http.server |
HTTP 服务器 |
http.cookies |
HTTP 状态管理 |
http.cookiejar |
HTTP 客户端的 Cookie 处理 |
xmlrpc |
XMLRPC 服务端与客户端模块 |
xmlrpc.client |
XML-RPC 客户端 |
xmlrpc.server |
基础的 XML-RPC 服务器 |
ipaddress |
IPv4/IPv6 操作库 |
国际化
本章中介绍的模块通过提供选择要在程序信息中使用的语言的机制或通过定制输出以匹配本地约定来帮助你编写不依赖于语言和区域设置的软件。
LIBRARY | DESCRIPTION |
---|---|
gettext |
多语种国际化服务 |
locale |
国际化服务 |
其他
多媒体服务
本章描述的模块实现了主要用于多媒体应用的各种算法或接口。
LIBRARY | DESCRIPTION |
---|---|
audioop |
操作原始音频数据 |
aifc |
读写AIFF/AIFC文件 |
sunau |
读写 Sun AU 文件 |
wave |
读写WAV格式文件 |
chunk |
读写IFF块文件 |
colorsys |
颜色系统间的转换 |
imghdr |
推测图像类型 |
sndhdr |
推测声音文件的类型 |
ossaudiodev |
访问兼容OSS的音频设备 |
加密服务
本章中描述的模块实现了加密性质的各种算法。 它们可由安装人员自行决定。 在Unix系统上,crypt
模块也可以使用。
LIBRARY | DESCRIPTION |
---|---|
hashlib |
安全哈希与消息摘要 |
hmac |
基于密钥的消息验证 |
secrets |
为密钥生成安全的随机数 |
程序框架界面
本章中描述的模块是很大程度上决定程序结构的框架。 目前,这里描述的模块都面向编写命令行接口。
LIBRARY | DESCRIPTION |
---|---|
turtle |
海龟绘图 |
cmd |
支持面向行的命令解释器 |
shlex |
简单词法分析器 |
杂项
Tk图形用户界面:https://docs.python.org/zh-cn/3/library/tk.html
formatter (已移除,通用的输出排版):https://docs.python.org/zh-cn/3/library/formatter.html
contextvars(上下文变量管理):https://docs.python.org/zh-cn/3/library/contextvars.html
参考资料
Python3官方文档:https://docs.python.org/3/library/