在本书的最后,我要介绍一些“Python 风格”的参考资料——这正是本书尝试解决的主要问题。
Brandon Rhodes 是位出色的 Python 教师,他的演讲“A Python Æsthetic: Beauty and Why I Python”(https://www.youtube.com/watch?v=x-kB2o8sd5c)很精彩,从标题中使用的 Unicode 字符 U+00C6(拉丁语大写字母 AE)开始谈起。另一位出色的教师 Raymond Hettinger,在 2013 年的 PyCon US 大会上谈了 Python 之美:“Transforming Code into Beautiful, Idiomatic Python”(https://www.youtube.com/watch?v=OSGv2VnC0go)。
Ian Lee 在 Python-ideas 邮件列表中发起的“Evolution of Style Guides”话题(https://mail.python.org/pipermail/python-ideas/2015-March/032557.html)值得一读。Lee 是 pep8 包(https://pypi.python.org/pypi/pep8/)的维护者,这个包的作用是检查 Python 代码是否符合 PEP 8。检查书中的代码时,我用的是 flake8(https://pypi.python.org/pypi/flake8),这个包融合了 pep8、pyflakes(https://pypi.python.org/pypi/pyflakes)和 Ned Batchelder 开发的 McCabe 复杂度插件(https://pypi.python.org/pypi/mccabe)。
除了 PEP 8,Google 的 Python 风格指南(https://google-styleguide.googlecode.com/svn/trunk/pyguide.html)和 Pocoo 风格指南(http://www.pocoo.org/internal/styleguide/)也有很大的影响。Pocoo 团队为我们开发了 Flask、Sphinx、Jinja 2 和其他优秀的 Python 库。
The Hitchhiker's Guide to Python!(http://docs.python-guide.org/en/latest/)由多人维护,说明如何编写符号 Python 风格的代码。为这个项目贡献最多内容的是 Kenneth Reitz,他因开发特别符合 Python 风格的 requests 包而被社区视为英雄。David Goodger 在 2008 年举办的 PyCon US 大会上办了一场教学活动,题为“Code Like a Pythonista: Idiomatic Python”(http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html)。如果打印出来,这个教程的教案有 30 页。当然,教案的 reStructuredText 源码能下载到,可以使用 docutils 将其渲染成 HTML 和 S5 幻灯片(http://meyerweb.com/eric/tools/s5/)。毕竟,reStructuredText 和 docutils 都是 Goodger 的作品。这两个工具是 Sphinx 的基础。Sphinx 是优秀的 Python 文档系统,顺便提一下,MongoDB(https://docs.mongodb.org/manual/about/#about-the-documentation-process)和很多其他项目的官方文档系统都是 Sphinx。
Martijn Faassen 直接回答了“什么是 Python 风格”这个问题(http://blog.startifact.com/posts/older/what-is-pythonic.html),python-list 邮件列表中也有一个相同标题的话题(https://mail.python.org/pipermail/tutor/2003-October/025930.html)。Martijn 的文章是 2005 年写的,那个话题是 2003 年讨论的,不过 Python 风格的思想没怎么变化,Python 语言本身也是如此。“Pythonic way to sum n-th list element?”话题(https://mail.python.org/pipermail/python-list/2003-April/192027.html)对 Python 风格做了深入讨论,我在第 10 章的“杂谈”中有大量引用。
“PEP 3099 — Things that will Not Change in Python 3000”(https://www.python.org/dev/peps/pep-3099/)解释了经过 Python 3 大幅度的调整之后,为何许多东西仍是现在的样子。长久以来,Python 3 有个昵称——Python 3000,不过诞生时间早了几个世纪,这让一些人失望。PEP 3099 的作者是 Georg Brandl,他收集了仁慈的独裁者(即 Guido van Rossum)的很多观点。Python Essays 页面(https://www.python.org/doc/essays/)列出了很多 Guido 自己写的文章。