翻译进度
7
分块数量
7
参与人数

标准库满足不了你的需求?

这是一篇社区协同翻译的文章,你可以点击右边区块信息里的『改进』按钮向译者提交改进建议。

尽管Python标准库已经非常丰富了,但也有一个由第三方开发人员提供的、可从  Python 包索引 获得模块的生态系统。本附录描述了其中的一些模块,包括您可能使用它们来补充或甚至替换标准库的情况。

正文

 String  模块包括一个分叉基本的模块工具, 但 Jinja2  和  Mako  是流行的独立代替品。它们都支持循环和条件控制结构,以及用于将数据与模版组合易产生文本输出的其他特性。

Re 模块包括用于使用正式描述的模式(正则表达式)来搜索和解析文本功能。然而这不是解析文本的唯一方式。

 PLY  包支持一 GNU 工具 LXX 合 YACC 的方式构建语法分析器,通常用于构建语言编译器。通过提供描述有效的指令输入、语法和每次遇到时采取的操作,可以构建完全功能的编译和解释器,以及更直接的数据解析器。

PyParsing 是构建解析器的另一种工具。输入是可以是操作符合方法调用链接在一起构建语法的类的实例。

最后, NLTK  是处理自然语言文本的一个软件包——人类语言而不是计算机语言。它支持将句子解析为词类、查找词根形式和基本语义处理。

算法

Functools  模块包括一些用于创建装饰器的工具,这些函数包装其他函数以改变它们的行为。 Wrapt包比 functools.wrap() 包更进一步,以确保装饰器被正确构造并适用于所有边缘情况。

zhanggh 翻译于 2个月前

日期和时间

time 和 datetime 提供了用于处理时间和日期的函数与类。 两者均包含用于解析字符串以将其转换为内部表示的函数。 dateutil 包包含了更为灵活的解析器,可以更轻松地构建优雅地处理不同输入格式的健壮应用程序。

datetime 模块包括一个时区感知类,用于表示特定时期的特定时间。 但是,它并没有包含完整的时区数据库。  pytz 包确提供了这样一个数据库。它并不和标准库一起发布,因为是由其它作者开发维护,它会随着时区和夏令时间的改变而频繁更新。

数学

math 模块包含高级数学函数的快速实现。 NumPy 包扩展了支持的函数集,包括线性代数和傅里叶变换函数。它同样内含了改进版的 array - 快速实现的多维数组。

lunyang 翻译于 2个月前

数据持久化与数据交换

本书 sqlite3 章节中的例子直接运行SQL语句,并使用了低级数据结构。然而大型应用程序通常需会使用对象关系映射器( Object Relational Mapper, ORM ) 将类映射到数据库中的表。 sqlalchemy ORM 库提供用于将类与表关联、构建查询以及与不同类型的生产级关系数据库连接的API。

lxml 包封装了 libxml2 和 libxslt 库,为我们提供了除 [xml.etree.ElementTree](https://pymotw.com/3/ xml.etree.ElementTree/index.html#module-xml.etree.ElementTree "xml.etree.ElementTree:XML Manipulation API") 中的 XML 解析器外的另一个选择。熟悉使用其他语言的开发人员可能会发现在 Python 中使用 lxml 会更容易一些。

defusedxml 包修复了大量XML 实体扩展拒绝服务攻击漏洞(例如 「 Billion Laughs 」),使得使用不受信任的 XML 文件时比单独使用标准库更安全。

jinyu121 翻译于 1个月前

密码学

密码学 包的团队表示:「我们的目标是让它成为您的“密码学标准库”。」 密码学包给应用提供了高级 APIs ,容易添加密码学功能特性。该软件包的维护活跃,发布频繁,积极修复诸如 OpenSSL 此类底层库中的漏洞。

用进程、线程、和协程并发

asyncio 内置的事件循环是一个基于模块定义的抽象 API 参考实现。可用诸如 uvloop 这样的库来替换事件循环,这么做可获得更好的性能,但代价是额外的应用依赖。

curio 是另一个类似 asyncio 的并发软件包,它把所有东西都按协程处理,不支持像 asyncio 那样的回调,因此它的 API 更小。

Twisted 库为 Python 编程提供了一个可扩展框架,尤其聚焦于提供基于时间的网络编程和多协议集成。它成熟、稳健、文档齐全。

__zc__ 翻译于 1个月前

互联网

requests 是替换 urllib.request 非常流行的选择。为了通过 HTTP 处理可寻址的远程资源,包括健壮的 SSL 支持,它提供了一致的 API ,且在多线程应用中能使用连接轮询以提供更好的性能。它还提供了一些特性,使其非常适合访问 REST API,比如内置的 JSON 解析。

Python html 模块对完整的 HTML 数据提供一个基础的解析器。然而,实际数据很少是完整的。 BeautifulSoup 和 PyQuery 库是 html 之外的替代品,它们面对混乱的数据时,表现得更稳健。它们都提供了解析、修改、创建 HTML 的 API。

内置的 http.server 包提供了一些基础类,帮助创建一个简单的 http 服务。然而除此之外,它对创建web应用程序没有提供太多的支持。 DjangoPyramid 是两个非常流行的web应用框架,他们对高级特性提供更多的支持,比如请求解析、URL 路由、和 cookie 处理。

许多现有的库不能和 asyncio 一起工作,因为它们不能集成到事件循环。作为 aio-libs 项目的一部分,一些像 aiohttp 这样的库为了弥补这一缺陷正在被创建。

__zc__ 翻译于 1个月前

Email

imaplib 的 API 相对底层,查询和解析结果需要理解 IMAP 协议。imapclient 提供更高级的 API,更容易让应用操控 IMAP 邮箱。

应用程序构件

argparsegetopt 这两个标准库将命令行参数的定义与解析处理分开。作为另外一个候选, click 定义命令处理函数,然后使用装饰器将选项和提示定义关联到这些命令。

cliff ("Command Line Interface Formulation Framework") 提供一组基类用于定义命令,还提供一个插件系统用于扩展应用程序的多个子命令,子命令可以单独分发。它使用 argparse 来创建帮助文本和参数解析器,因此命令行处理过程大家不会陌生。

docopt 将过程反了过来,要求先写程序的帮助文本,接着解析文本去理解子命令,最后确定选项和子命令组合的有效性。

prompt_toolkit 为基于终端的交互式程序提供高级特性,比如彩色支持,语法高亮,输入编辑,鼠标支持,历史搜索。它能和 cmd 一起创建命令行程序或像文本编辑器这样的全屏应用。

尽管 configparser 所使用的 INI 在应用配置中一直很流行,YAML 格式也很流行。YAML 提供许多比 JSON 更容易阅读的数据结构特性。PyYAML 对 YAML 解析器和序列化器提供存取接口。

__zc__ 翻译于 1个月前

开发者工具

标准库模块 venv 是 Python 3 新增的。若要同时支持 Python 2 和 3 的应用程序隔离,请使用 virtualenv

fixtures 量身定制了几个测试资源管理类,可与 unittestaddCleanup 方法一起配合工作。这些 fixture 类采用一种一致又安全的方式来管理日志记录器、环境变量、临时文件等,能保证测试集中的每个测试用例完全相互隔离。

标准库中打包复用的模块 distutils 已经弃用。新的替代者 setuptools 与标准库分开包装,更容易地频繁交付新版本。setuptools API 含有构建包文件列表的工具。还有扩展能自动从版本控制系统管理的文件集中构建文件列表。例如,用 setuptools-git 可以默认自动包含 git 源码仓库追踪的所有文件。创建软件包之后,twine 可将包上传到 package index 与其他开发者共享。

tabnanny 这样的库善于发现 Python 源码中的常见格式错误。Python Code Quality Authority 维护一个用途广泛且更高级 静态分析工具 ,它有强制实行风格指南的工具,能发现常见编程错误,甚至帮助避免过度复杂。

另请参阅

  • Python Package Index 或 PyPI -- 查找和下载扩展模块的站点,这些包与 Python 运行库分开分发的。
__zc__ 翻译于 1个月前

本文章首发在 PythonCaff
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

参与译者:7
讨论数量: 0
发起讨论


暂无话题~