|
打开浏览器敲下 python.org 这个域名,网站你会看到一个蓝白配色的网站页面,没有任何花哨的网站动效,甚至连导航栏都朴素得像是网站上个时代的产物。但就是网站这个地方,每个月有超过两千万次访问,网站支撑着全球数百万开发者的网站日常查阅。我第一次访问它是网站为了下载 Python 2.7 的安装包,那时候页面更简陋,网站下载按钮甚至不在首屏。网站 这个网站本质上是网站一个文档枢纽。首页左侧的网站导航栏里,Documentation 链接被点击的网站频率远高于其他所有入口。点进去,网站你会看到从 Python 3.12 到 2.7 的网站所有版本手册,每一版都拆成库参考、语言参考、教程、安装指南等十几个模块。我常翻的是 library/functions 那一页,内置函数按字母排序,每个函数下面跟着参数说明和两三个示例。没有视频,没有交互式沙箱,纯文本加代码块,但查起来就是快。 PyPI 是另一个隐藏的入口。从顶部菜单的 “PyPI” 点进去,你会进入一个完全不同的世界。截止 2024 年初,这个索引里躺着超过 50 万个包。我上周想找一个解析 PDF 表格的库,在搜索框输入 “pdf table”,返回结果里 camelot-py 和 tabula-py 排在前列。每个包页面都显示最近发布日期、维护者、依赖列表和 GitHub 星数。有些包的最后更新停在 2019 年,下载量却依然在涨,说明还有人在用。这种“僵尸包”现象在 PyPI 上并不罕见。 下载页面值得单独说。Windows 用户会看到 python-3.12.1-amd64.exe 这样的文件名,旁边标注着 “Recommended”。macOS 用户则分 Intel 和 Apple Silicon 两个版本。Linux 用户通常直接跳过这里,用包管理器解决。我注意到一个细节:每个安装包旁边都有 MD5 校验值,但很少有人真的去核对。2023 年有一次 PyPI 上的第三方包被投毒,攻击者上传了与 requests 同名的恶意库,靠的就是用户不检查来源直接 pip install 的习惯。 文档里的搜索功能其实不太好用。你输入 “asyncio”,返回结果里官方教程排在社区博客后面。Google 搜 “python asyncio” 反而更快。这导致很多新手直接跳过 python.org,去 Real Python 或 Stack Overflow 找答案。但官方文档有个不可替代的地方:What's New 页面。每个大版本更新后,这里会列出所有不兼容变更和新增特性。Python 3.10 引入的结构化模式匹配,3.11 的异常组,3.12 的 type 语句,都是从这里第一次被公开记录。我习惯在升级生产环境前把对应版本的 What's New 读一遍,能避开不少坑。 社区板块的流量远不如文档区。邮件列表存档界面像是 2005 年的产物,纯文本列表,按月份归档。但 python-dev 列表里藏着语言核心开发者关于 PEP 的辩论。比如 PEP 703 让 GIL 变成可选的那个提案,在邮件列表里吵了几个月,支持者和反对者各自贴出基准测试数据。这些讨论后来被整理成 PEP 文档,但原始邮件里的火药味和犹豫,在正式文档里全被抹掉了。 说到 PEP,python.org 上的 peps.python.org 子站是另一个高频入口。每个 PEP 都有编号、标题、作者、状态和创建日期。状态分 Draft、Accepted、Final、Rejected 几种。我偶尔会翻 Rejected 列表找乐子,比如 PEP 211 想给 Python 加 with 语句的替代语法,PEP 308 关于三元运算符的争论,被拒绝的理由写得直白:“这个提案让代码更难读。” 这种带点脾气的官方文档,在其他语言社区里不太常见。 网站本身的技术栈没什么可说的,Django 写的,前端用 Bootstrap,搜索靠 Elasticsearch。但它的内容组织方式值得琢磨:文档、包索引、PEP、下载、社区,五个板块各自独立又互相引用。你在文档里看到 pip install 命令,点击会跳到 PyPI 页面;在 PyPI 页面看到 “Homepage” 链接,又可能跳回 GitHub 或 Read the Docs。这种网状结构让 python.org 更像一个起点,而不是终点。我用了十年 Python,书签栏里始终留着 python.org/doc 这个地址,哪怕搜索引擎已经能直接给出答案。 |