一行命令统一Python代码风格,psf/black拿下41.5k Star

对于Python开发者来说,代码格式是个绕不开的话题。空格数、引号类型、换行位置,每个团队都有自己的偏好,code review里格式讨论占了大量时间。这类问题没有标准答案,争论往往无果而终。

psf/black 直接终结了这个争论。它由Python基金会(PSF)维护,口号是"The Uncompromising Code Formatter",GitHub上已拿下41.5k Star。

正文顶部截图

README区域截图

Black的核心理念:别纠结格式,全部交给工具。你负责代码逻辑,Black负责格式。格式化后的代码在所有项目中看起来一致,读代码时能直接关注内容本身,而不是去适应每个项目的格式风格。

Black遵循PEP 8规范,但比PEP 8更"固执"。配置项刻意控制得很精简,不让你在格式细节上耗时间。官方文档里有一句话:"如果你问自己是否需要配置什么,答案是不需要。"这反映了Black的设计哲学:默认设置够用。它不支持配置行宽之外的大多数格式选项,避免团队内部再次陷入配置争论。

Black生成的diff很小。对code review来说,合并冲突减少,reviewer能集中精力看逻辑变更,而不是纠结空格和换行。这对大型项目的维护效率有实际帮助。

早期Black在很多方面比较绝对化。随着用户量增长和边缘案例的反馈,现在它对部分规则做了务实调整,比如魔法尾随逗号、空行处理等场景。官方文档里有专门的"实用主义"章节来说明这些例外。


安装使用

安装只需一行:

pip install black

要求Python 3.10以上。如需格式化Jupyter Notebook:

pip install "black[jupyter]"

使用同样直接:

black 源文件或目录

或作为Python模块运行:

python -m black 源文件或目录

项目配置通过pyproject.toml管理,可以指定include和exclude规则。

Black内置安全机制:格式化后检查AST是否与原代码等效,确保不改逻辑。如果放心,加–fast跳过检查,速度更快。


谁在用

Black的用户名单包括:pytest、Django、SQLAlchemy、Poetry、pandas、Pillow、Twisted、Home Assistant等项目。公司方面,Dropbox、Mozilla、Quora、Duolingo、Tesla等也在使用。

SQLAlchemy作者Mike Bayer的评价是:“我整个编程生涯中,没有哪个工具比Black带来的生产力提升更大。现在做重构需要的按键次数只有以前的1%。”

attrs作者Hynek Schlawack说:“一个管用的自动格式化工具,就是我圣诞节想要的。”

如果项目用了Black,可以在README里加上"Code style: black"的徽章,向贡献者标明格式规范。


Black是PSF旗下项目,MIT协议开源。受够了code review里的格式争论,可以试试看。

规范。


Black是PSF旗下项目,MIT协议开源。受够了code review里的格式争论,可以试试看。

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐