The Python Standard Library

善工必先利其器

介绍

标准库意味着由官方维护,会随着语言的演变而演变;因而值得大下功夫,好好琢磨。

标准库非常庞大,所提供的组件涉及范围十分广泛。该库包含了多个内置模块 (以C编写),Python 程序员必须依靠它们来实现系统级功能,例如文件 I/O;此外还有大量以Python编写的模块,提供了日常编程中许多问题的标准解决方案

概述

本文将罗列出这些标准库,但鉴于数量众多、功能复杂。
因此,先根据模块所针对的目标人群进行分类:入门级、高手级、骨灰级;之后根据其处理的问题进行大致分类(部分重叠)。

但出于方便,单独列出一节简述常用标准库的功能。

常用标准库

完整目录

通用

这部分单独列出各个阶段玩家都会使用到的一些工具。

系统工具

该部分主要用来支持调用操作系统的一些标准库。

系统平台无关(通用操作系统服务)

本章中描述的各模块提供了在(几乎)所有的操作系统上可用的操作系统特性的接口,例如文件和时钟。这些接口通常以 Unix 或 C 接口为参照对象设计,不过在大多数其他系统上也可用。

LIBRARYDESCRIPTION
os操作系统接口模块
io处理流的核心工具
time时间的访问和转换
argparse命令行选项、参数和子命令解析器
getoptC风格的命令行解析器
loggingPython 的日志记录工具
logging.config日志记录配置
logging.handlers日志处理器
getpass便携式密码输入工具
curses终端字符单元显示的处理
platform获取底层平台的标识数据
errno标准errno系统符号
ctypesPython 的外部函数库

系统平台相关

Windows系统相关模块
Unix专有模块

入门级

解释器相关

内置函数

Python 解释器内置了很多函数和类型,您可以在任何时候使用它们;具体目录参见https://docs.python.org/zh-cn/3/library/functions.html。

内置常量

有少数的常量存在于内置命名空间中。它们是:

  • False
  • True
  • None
  • NotImplemented
  • Ellipsis,等同于...
  • __debug__

注解:变量名NoneFalseTrue__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同样提供一些内置的数据类型,特别的,dictlistsetfrozenset 以及tuplestr类通常指Unicode 字符串,并且bytes通常指二进制数据

LIBRARYDESCRIPTION
datetime基本的日期和时间类型
calendar日历相关函数
collections容器数据类型
collections.abc容器的抽象基类
heapq堆队列算法
bisect数组二分查找算法
array处理数值类型高效的数组
weakref弱引用
types动态创建类型,为内建类型提供指代
copy浅层 (shallow) 和深层 (deep) 复制操作
pprint数据美化输出
reprlibrepr()的可替换实现
enum对枚举(enumerations)进行支持

数学和数学模块

本章介绍的模块提供与数字和数学相关的函数和数据类型。numbers模块定义了数字类型的抽象层次结构。 mathcmath模块包含浮点数和复数的各种数学函数。decimal模块支持使用任意精度算术的十进制数的精确表示。

LIBRARYDESCRIPTION
numbers数字的抽象基类
math数学函数
decimal十进制定点和浮点运算
fractions分数
random生成伪随机数
statistics数学统计函数

文件和目录访问

本章中描述的模块处理磁盘文件和目录。 例如,有一些模块用于读取文件的属性,以可移植的方式操作路径以及创建临时文件。

LIBRARYDESCRIPTION
pathlib面向对象的文件系统路径
os.path常见路径操作
fileinput提供多个输入流的迭代功能
stat解释stat()的结果
filecmp文件及目录的比较
tempfile产生临时文件及文件夹
globUnix类型路径名扩展
fnmatchUnix类型文件名匹配
linecache随机访问文本行
shutil高层次文件操作接口
macpathMac OS 9 路径操作函数

更多:
模块 os:操作系统接口,包括处理比Python文件对象更低级别文件的功能。
模块 io:Python的内置 I/O 库,包括抽象类和一些具体的类,如文件 I/O 。
内置函数 open():使用 Python 打开文件进行读写的标准方法。

高手级

编程范式

函数式编程模块

本章里描述的模块提供了函数和类,以支持函数式编程风格和在可调用对象上的通用操作。

LIBRARYDESCRIPTION
itertools为高效循环而创建迭代器的函数
functools高阶函数和可调用对象上的操作
operator标准运算符替代函数

并发执行

本章中描述的模块支持并发执行代码。 适当的工具选择取决于要执行的任务(CPU密集型或IO密集型)和偏好的开发风格(事件驱动的协作式多任务或抢占式多任务处理)。

LIBRARYDESCRIPTION
threading基于线程的并行
multiprocessing基于进程的并行
concurrent启动并行任
subprocess子进程管理
sched事件调度器
queue一个同步的队列类
_thread底层多线程 API
_dummy_thread_thread 的替代模块
dummy_threading可直接替代 threading 模块。

开发生命周期相关

该部分主要是用来支撑软件工程的某些生命周期所需的功能。

开发工具

本章中描述的各模块可帮你编写 Python 程序。例如,pydoc 模块接受一个模块并根据该模块的内容来生成文档。doctestunittest 这两个模块包含了用于编写单元测试的框架,并可用于自动测试所编写的代码,验证预期的输出是否产生。2to3 程序能够将 Python 2.x 源代码翻译成有效的 Python 3.x 源代码。

LIBRARYDESCRIPTION
typing类型标注支持
pydoc文档生成器及在线求助系统
doctest测试交互性的Python示例
unittest单元测试框架
unittest.mockmock对象库
`2to3 - 自动将 Python 2 代码转为 Python 3 代码
test支持 Python 回归测试
test.supportPython 测试组曲的实用工具
test.support.script_helperPython执行测试的使用工具

调试和分析

这些库可以帮助你进行Python开发:调试器使你能够逐步执行代码,分析堆栈帧并设置断点等,而分析器运行代码并为你提供执行时间的详细分类,从而使你能够找出你程序中的瓶颈。

LIBRARYDESCRIPTION
bdbdebugger框架
faulthandler转存 Python 错误回溯
pdbPython的调试器
timeit测量小代码片段的执行时间
trace追溯 Python 语句执行情况
tracemalloc跟踪内存分配

软件打包和分发

这些库可帮助你发布和安装 Python 软件。

LIBRARYDESCRIPTION
distutils构建和安装 Python 模块
ensurepip引导 pip 安装器
venv创建虚拟环境
zipapp管理可执行的 Python zip压缩包

骨灰级

Python运行时服务

本章里描述的模块提供了和Python解释器及其环境交互相关的广泛服务。

LIBRARYDESCRIPTION
sys系统相关的参数和函数
sysconfig访问 Python’s 配置信息
builtins内建对象
__main__顶层脚本环境
warnings警告控制
dataclasses数据类
contextlibwith语句上下文的实用工具
abc抽象基类
atexit退出处理器
traceback打印或检索堆栈回溯
__future__Future 语句定义
gc垃圾回收器接口
inspect检查对象
sitesite配置钩子

自定义Python解释器

本章中描述的模块允许编写类似于 Python 的交互式解释器的接口。

LIBRARYDESCRIPTION
code解释器基类
codeop编译Python代码

导入模块

本章中介绍的模块提供了导入其他Python模块和挂钩以自定义导入过程的新方法。

LIBRARYDESCRIPTION
zipimport从zip压缩包中导入模块
pkgutil包扩展的实用工具
modulefinder查找脚本使用的模块
runpy定位与执行 Python 模块
importlibimport 的实现

Python语言服务

Python 提供了许多模块来帮助使用 Python 语言。 这些模块支持标记化、解析、语法分析、字节码反汇编以及各种其他工具。

LIBRARYDESCRIPTION
parser访问 Python 解析树
ast抽象语法树
symtable访问 编译器的符号表
symbol与 Python 解析树一起使用的常量
token与Python解析树一起使用的常量
keyword检验Python关键字
tokenizePython源码的Tokenizer
tabnanny模糊缩进检测
pyclbrPython 类浏览器的支撑包
py_compile编译 Python 源码
compileall二进制编码 Python库
disPython 字节码反汇编器
pickletoolspickle开发者的工具箱

任务相关

该部分罗列的是与需求域相关的一些标准库。

文字处理

文本处理服务

本小节介绍的模块提供了广泛的字符串操作和其他文本处理服务。
二进制数据服务之下描述的codecs模块也与文本处理高度相关。此外也请参阅Python内置字符串类型的文档文本序列类型 – str

LIBRARYDESCRIPTION
string常见的字符串操作
re正则表达式操作
difflib计算差异的辅助工具
textwrap文本自动换行与填充
unicodedataUnicode 数据库
stringprep因特网字符串预备
readlineGNU readline 接口
rlcompleterGNU readline 的补全函数

数据处理

文件格式

本章中描述的模块解析各种不是标记语言且与电子邮件无关的杂项文件格式。

LIBRARYDESCRIPTION
csvCSV 文件读写
configparserConfiguration file parser
netrcnetrc file processing
xdrlibEncode and decode XDR data
plistlibGenerate and parse Mac OS X .plist files

数据压缩和存档

本章中描述的模块支持 zlib、gzip、bzip2 和 lzma 数据压缩算法,以及创建 ZIP 和 tar 格式的归档文件。参见由 shutil 模块提供的 Archiving operations 。

LIBRARYDESCRIPTION
zlib与 gzip 兼容的压缩
gzip对 gzip 格式的支持
bz2对 bzip2 压缩算法的支持
lzma用 LZMA 算法压缩
zipfile使用ZIP存档
tarfile读写tar归档文件

结构化标记处理工具

Python 支持各种模块,以处理各种形式的结构化数据标记。 这包括使用标准通用标记语言(SGML)和超文本标记语言(HTML)的模块,以及使用可扩展标记语言(XML)的几个接口。

LIBRARYDESCRIPTION
html超文本标记语言支持
html.parser简单的 HTML 和 XHTML 解析器
html.entitiesHTML 一般实体的定义
xml.etree.ElementTreeThe ElementTree XML API
xml.domThe Document Object Model API
xml.dom.minidom最小 DOM 实现
xml.dom.pulldom支持构建部分 DOM 树
xml.saxSAX2 解析器
xml.sax.handlerSAX 处理器的基类
xml.sax.saxutilsSAX 实用工具
xml.sax.xmlreaderXML 解析器接口
xml.parsers.expat实用 Expat 实现的快速XML解析

二进制数据服务

本章介绍的模块提供了一些操作二进制数据的基本服务操作。 有关二进制数据的其他操作,特别是与文件格式和网络协议有关的操作,将在相关章节中介绍。
下面描述的一些库文本处理服务也可以使用ASCII兼容的二进制格式(例如re)或所有二进制数据(例如difflib)。
另外,请参阅Python的内置二进制数据类型的文档二进制序列类型bytes, bytearray, memoryview

LIBRARYDESCRIPTION
struct将字节串解读为打包的二进制数据
codecs编解码器注册和相关基类

数据持久化

本章中描述的模块支持在磁盘上以持久形式存储 Python 数据。picklemarshal模块可以将许多 Python 数据类型转换为字节流,然后从字节中重新创建对象。各种与 DBM 相关的模块支持一系列基于散列的文件格式,这些格式存储字符串到其他字符串的映射。

LIBRARYDESCRIPTION
picklePython 对象序列化
copyregpickle支撑函数的注册表
shelvePython 对象持久化
marshal内部 Python 对象序列化
dbmUNIX “数据库”的接口
sqlite3SQLite 数据库 DB-API 2.0 接口模块

网络开发

网络和进程间通信

本章介绍的模块提供了网络和进程间通信的机制。

某些模块仅适用于同一台机器上的两个进程,例如signalmmap。其他模块支持两个或多个进程可用于跨机器通信的网络协议。

LIBRARYDESCRIPTION
asyncio异步 I/O
socket底层网络接口
sslsocket对象的TLS/SSL包装器
select等待 I/O 完成
selectors高级 I/O 复用库
asyncore异步socket处理器
asynchat异步 socket 指令/响应 处理器
signal设置异步事件处理程序
mmap内存映射文件支持

互联网数据处理

本章介绍了支持处理互联网上常用数据格式的模块。

LIBRARYDESCRIPTION
email电子邮件与 MIME 处理包
jsonJSON 编码和解码器
mailcap处理Mailcap文件 file handling
mailbox管理不同格式的邮箱
mimetypes将文件名映射为MIME类型
base64Base16, Base32, Base64, Base85 数据编码
binhex对binhex4文件进行编码和解码
binascii二进制和 ASCII 码互转
quopriMIME 可打印字符引用编码数据(MIME quoted-printable data)的解码与编码
uuuuencode格式数据的编码与解码

互联网协议和支持

本章介绍的模块实现了互联网协议并支持相关技术。 它们都是用 Python 实现的。 这些模块中的大多数都需要存在依赖于系统的模块 socket ,目前大多数流行平台都支持它。

LIBRARYDESCRIPTION
webbrowser方便的Web浏览器控制器
cgi支持Common Gateway Interface
cgitbCGI脚本的追踪管理器
wsgirefWSGI实用工具及参考实现
urllibURL 处理模块
urllib.request用于打开 URL 的可扩展库
urllib.responseurllib 使用的 Response 类
urllib.parse将 URLs 解析为各组件
urllib.errorurllib.request 引发的异常类
urllib.robotparserrobots.txt 语法分析程序
http.clientHTTP 协议客户端
ftplibFTP 协议客户端
poplibPOP3 协议客户端
imaplibIMAP4 协议客户端
nntplibNNTP 协议客户端
smtplibSMTP 协议客户端
smtpdSMTP 服务端
telnetlibTelnet 客户端
uuidUUID(RFC 4122) 对象
socketserver网络服务器框架
http.serverHTTP 服务器
http.cookiesHTTP 状态管理
http.cookiejarHTTP 客户端的 Cookie 处理
xmlrpcXMLRPC 服务端与客户端模块
xmlrpc.clientXML-RPC 客户端
xmlrpc.server基础的 XML-RPC 服务器
ipaddressIPv4/IPv6 操作库

国际化

本章中介绍的模块通过提供选择要在程序信息中使用的语言的机制或通过定制输出以匹配本地约定来帮助你编写不依赖于语言和区域设置的软件。

LIBRARYDESCRIPTION
gettext多语种国际化服务
locale国际化服务

其他

多媒体服务

本章描述的模块实现了主要用于多媒体应用的各种算法或接口。

LIBRARYDESCRIPTION
audioop操作原始音频数据
aifc读写AIFF/AIFC文件
sunau读写 Sun AU 文件
wave读写WAV格式文件
chunk读写IFF块文件
colorsys颜色系统间的转换
imghdr推测图像类型
sndhdr推测声音文件的类型
ossaudiodev访问兼容OSS的音频设备

加密服务

本章中描述的模块实现了加密性质的各种算法。 它们可由安装人员自行决定。 在Unix系统上,crypt模块也可以使用。

LIBRARYDESCRIPTION
hashlib安全哈希与消息摘要
hmac基于密钥的消息验证
secrets为密钥生成安全的随机数

程序框架界面

本章中描述的模块是很大程度上决定程序结构的框架。 目前,这里描述的模块都面向编写命令行接口。

LIBRARYDESCRIPTION
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/

0%