You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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的这一格式化行为主要由两个规则驱动:

  1. 行长度限制:默认遵循PEP8的80字符行宽限制,当单行代码长度超过阈值时,Ruff会自动拆分长语句为多行。
  2. 列表字面量换行规则:若启用了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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 03:42:13