Ruff为何展开Python代码语句?如何禁用该行为?
Ruff自动展开Python语句的原因及禁用方法
你编写的Python代码:
tm = tm[0:3] + [0,] + tm[3:6] + [0,]
被Ruff自动格式化为多行结构:
tm = ( tm[0:3] + [ 0, ] + tm[3:6] + [ 0, ] )
展开语句的原因
Ruff的这一格式化行为主要由两个规则驱动:
- 行长度限制:默认遵循PEP8的80字符行宽限制,当单行代码长度超过阈值时,Ruff会自动拆分长语句为多行。
- 列表字面量换行规则:若启用了
LIST002规则,Ruff会将单元素列表(如[0,])强制拆分为多行,以统一列表格式风格。
此外,Ruff的表达式复杂度分析逻辑也可能判定这类拼接表达式拆分后更符合“可读性优先”的格式化规范,尽管实际场景中反而降低了可读性。
禁用该行为的方法
1. 单行临时禁用
在目标代码行末尾添加注释,跳过对应的格式化规则:
tm = tm[0:3] + [0,] + tm[3:6] + [0,] # noqa: E501, W503, LIST002
E501:禁用行长度检查W503:禁用“运算符前换行”规则LIST002:禁用单元素列表强制换行规则
2. 修改全局配置文件
在项目的pyproject.toml或ruff.toml中调整规则:
调整最大行宽
放宽行长度限制,避免因行宽触发拆分:
[tool.ruff] line-length = 120 # 根据需求设置更大值
禁用特定规则
直接关闭导致拆分的规则:
[tool.ruff.lint] disable = [ "E501", # 关闭行长度检查 "LIST002", # 关闭单元素列表强制换行 "W503" # 关闭运算符前换行 ]
内容的提问来源于stack exchange,提问作者Besi
相关产品推荐
相关产品推荐

