如何使用 Black 格式化程序自动中断 Python 代码中的长字符串常量?

nev*_*ves 10 python autoformatting visual-studio-code python-black

Python 格式化指南,著名的PEP8建议行长度不要超过79 个字符

我可以使用Black Formatter轻松地将代码自动格式化为最大行长度,但它不会破坏长字符串。linter 仍然会抱怨代码中的长 URL,而 Black 也无济于事。

是否可以使用 Black 格式化程序自动断开长字符串?

nev*_*ves 9

是的,由于一项新功能,这是可能的。

首先确保您安装了最新的 Black 格式化程序。现在只需使用选项运行黑色即可--experimental-string-processing

在 VSCode 中,您可以在文件中配置它settings.json

"python.formatting.blackArgs": [
    "--line-length",
    "99",
    "--experimental-string-processing"
],
Run Code Online (Sandbox Code Playgroud)

编辑后settings.json,重新启动 Black 服务器以使更改生效:Cmd/Ctrl + Shift + P -> Black Formatter:重新启动服务器。

顺便说一句,如果您想增加默认行长度,最好在 linter 中也更改为相同的值:

"python.linting.flake8Args": [
        "--max-line-length=99",
],
Run Code Online (Sandbox Code Playgroud)

有些团队确实更喜欢更长的行,不要让他们以此作为不自动格式化的理由。

BTW,PEP8 支持更长的线路长度

有些团队强烈喜欢更长的线路。对于专门或主要由可以就此问题达成一致的团队维护的代码,可以将行长度限制增加到99 个字符,前提是注释和文档字符串仍以 72 个字符换行。

  • 在我的工作区设置中(我没有检查项目范围的设置),参数是“black-formatter.args”而不是“python.formatting.blackArgs”。 (3认同)

ber*_*kie 5

对于较新版本的黑色(例如,22.1.0),此功能现在已成为--preview标志的一部分。