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__

注解:变量名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通常指二进制数据

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

数学和数学模块

本章介绍的模块提供与数字和数学相关的函数和数据类型。numbers模块定义了数字类型的抽象层次结构。 mathcmath模块包含浮点数和复数的各种数学函数。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 模块接受一个模块并根据该模块的内容来生成文档。doctestunittest 这两个模块包含了用于编写单元测试的框架,并可用于自动测试所编写的代码,验证预期的输出是否产生。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 数据。picklemarshal模块可以将许多 Python 数据类型转换为字节流,然后从字节中重新创建对象。各种与 DBM 相关的模块支持一系列基于散列的文件格式,这些格式存储字符串到其他字符串的映射。

LIBRARY DESCRIPTION
pickle Python 对象序列化
copyreg pickle支撑函数的注册表
shelve Python 对象持久化
marshal 内部 Python 对象序列化
dbm UNIX "数据库"的接口
sqlite3 SQLite 数据库 DB-API 2.0 接口模块

网络开发

网络和进程间通信

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

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

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/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,784评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,745评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,702评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,229评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,245评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,376评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,798评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,471评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,655评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,485评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,535评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,235评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,793评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,863评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,096评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,654评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,233评论 2 341

推荐阅读更多精彩内容