内容提要
Ruff v0.3.0 发布,格式化器转为稳定版,并推出 2024.2 风格指南,旨在替代 Black。新风格优先换行赋值值、括号化多上下文管理器、压缩空函数体、优化多行字符串与 f-string 占位符格式。新增范围格式化支持,可仅格式化修改行;并加入 RUF028 规则,检测无效的格式化抑制注释。
延伸解读
格式化器稳定版的意义
Ruff v0.3.0 将格式化器从 Beta 提升为稳定版,这意味着它已准备好用于生产环境。对于考虑从 Black 迁移的团队,现在可以更放心地采用 Ruff,同时享受其极快的速度。稳定版也表明 Ruff 在兼容性和可靠性上达到了新的水平。
2024.2 风格指南的主要变化
新风格指南旨在作为 Black 的替代品,主要变化包括:优先换行赋值值而非目标、对多上下文管理器加括号、压缩空函数体、优化多行字符串和 f-string 占位符格式。这些调整使代码更紧凑,并减少了不必要的垂直空间。
范围格式化的实用场景
范围格式化允许仅格式化修改的行或选定区域,特别适合逐步采用格式化器的项目,或那些没有统一格式但希望局部格式化的代码库。在 VS Code 中,通过设置 editor.formatOnSaveMode 为 modificationsIfAvailable,可以在保存时仅格式化修改部分,避免大规模改动。
RUF028 规则的作用
RUF028 规则检测无效的格式化抑制注释,例如在表达式内部使用 # fmt: off。由于 Ruff 对抑制注释的位置要求比 Black 更严格,这有助于用户理解为何某些注释被忽略,并引导他们修正注释位置,确保格式化行为符合预期。
Q&A
Ruff v0.3.0 中格式化器状态有什么变化?
Ruff v0.3.0 将格式化器从测试版转为稳定版,并推出了 2024.2 风格指南。
Ruff 2024.2 风格指南在赋值换行方面有什么新规则?
新风格优先换行赋值语句的值,而不是赋值目标或类型注解。
Ruff 如何处理多个上下文管理器的 with 语句?
当目标 Python 版本为 3.9 或更高时,Ruff 会将长的上下文管理器用括号括起来并换行。
Ruff 的范围格式化功能有什么用途?
范围格式化允许仅格式化选中的代码范围或基于版本控制信息仅格式化修改的行,适用于逐步采用格式化器或仅格式化特定修改区域的场景。
Ruff 新增的 RUF028 规则是做什么的?
RUF028 规则用于检测无效的格式化抑制注释,即 Ruff 格式化器不会尊重的 # fmt: off 注释。
Ruff 对 f-string 占位符的格式化支持如何?
Ruff v0.2.2 添加了对 f-string 内部格式化的支持(预览模式),可以自动格式化占位符中的表达式。