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

如何让Black格式化工具保留链式方法调用的逐行格式?

让Black保留链式方法调用的换行格式

我在使用Black格式化Python代码时,希望保留这种清晰的每行一个方法的链式调用结构:

result = (
    data
    .some_method()
    .some_other_method(arg1, arg2)
    .yet_another_method_with_longer_name(arg3)
)

但Black总是自动将其压缩为一行:

result = data.some_method().some_other_method(arg1, arg2).yet_another_method_with_longer_name(arg3)

官方文档对调用链的格式化规则描述比较模糊,我不想用#fmt: on/off这类注释(会导致代码中充斥大量此类标记),想找类似"魔法尾随逗号"的方式来强制保留换行格式。


可行方案:用反斜杠强制换行

在括号内的起始对象(如示例中的data)末尾添加一个反斜杠,Black就会尊重你手动设置的换行格式:

result = (
    data\
    .some_method()
    .some_other_method(arg1, arg2)
    .yet_another_method_with_longer_name(arg3)
)

额外说明

Black默认逻辑是:短链式调用会被合并成一行,只有当调用链长度超过设定行宽时才会自动换行。上述方法利用Python的行延续符规则,明确告知Black你需要每行一个方法的格式,无需依赖行宽限制触发自动换行。

内容的提问来源于stack exchange,提问作者Ken Williams

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 00:56:18