Ruff 格式化器
内容提要
Ruff 发布了用 Rust 编写的 Python 格式化器 Beta 版,速度比 Black 快 30 倍、比 YAPF 快 100 倍,与 Black 兼容度超 99.9%。该格式化器内置于 Ruff,可简化工具链,支持 Python 3.12 和 Jupyter,并计划推出稳定版。
延伸解读
性能提升的实际意义
Ruff 格式化器比 Black 快 30 倍以上,比 YAPF 快 100 倍,能在毫秒级格式化大型项目。这意味着开发者可以更频繁地运行格式化,甚至在整个代码库上运行,而无需担心耗时。这种速度提升改变了工作流程,使格式化变得几乎无感,提升了开发体验。
与 Black 的兼容性及迁移
Ruff 格式化器与 Black 的兼容度超过 99.9%,在 Django 等项目中仅极少数文件有差异。它设计为 Black 的替代品,迁移时大部分代码格式不变,减少了项目切换工具的成本。但仍有少量已知差异,迁移前建议检查这些边缘情况。
配置选项与工具链整合
虽然默认兼容 Black,但 Ruff 格式化器提供了额外的配置选项,如引号风格和缩进风格。它内置于 Ruff 中,无需单独安装,简化了工具链。未来计划与 linter 深度集成,例如自动格式化 lint 修复和检查 fmt 注释,这有望进一步提升开发效率。
Beta 版状态与未来计划
当前为 Beta 版,但已生产可用,Dagster 等用户已在大型代码库中使用。稳定版将增加对 Black 预览风格、范围格式化和 f-string 内格式化的支持。Beta 期间,团队特别关注格式化器配置和与 linter 集成的反馈,用户可积极参与。
Q&A
Ruff 格式化器是什么?
Ruff 格式化器是一个用 Rust 编写的极快的 Python 代码格式化工具,内置于 Ruff 中,目前处于 Beta 阶段。
Ruff 格式化器比 Black 和 YAPF 快多少?
Ruff 格式化器比 Black 快 30 倍以上,比 YAPF 快 100 倍,能在毫秒级格式化大型 Python 项目。
Ruff 格式化器与 Black 的兼容性如何?
Ruff 格式化器与 Black 的兼容性超过 99.9%(按更改行数衡量),在 Django 代码库中,2772 个文件里只有 34 个文件与 Black 有差异。
Ruff 格式化器支持哪些配置选项?
Ruff 格式化器默认与 Black 兼容,但允许用户配置引号风格(单引号或双引号)和缩进风格(空格或制表符)。
Ruff 格式化器有哪些额外功能?
Ruff 格式化器支持解析和格式化 Python 3.12 代码,内置支持格式化 Jupyter 笔记本,并通过 VS Code 扩展和语言服务器提供编辑器集成,支持保存时自动格式化。
Ruff 格式化器稳定版计划增加哪些功能?
稳定版将支持 Black 的预览风格、语言服务器和编辑器集成中的范围格式化,以及 f-string 内的格式化。