为什么代码有注释时黑色会输出不同的格式?

问题描述 投票:0回答:1

示例1

Python代码:

def long_long_long_long_long_long_long_long_long_long_long_long_func(arg: list): ...


long_long_long_long_long_long_long_long_long_long_long_name = (
    long_long_long_long_long_long_long_long_long_long_long_long_func(
        arg=[
            "long_long_long_long_long_long_long_long_long_long_long_string",
            "long_long_long_long_long_long_long_long_long_long_long_string",
        ]
    )
)

黑色之后,什么都没有改变。那就好啦。

示例2

Python代码:

def long_long_long_long_long_long_long_long_long_long_long_long_func(arg: list): ...


long_long_long_long_long_long_long_long_long_long_long_name = (
    long_long_long_long_long_long_long_long_long_long_long_long_func(
        arg=[
            "long_long_long_long_long_long_long_long_long_long_long_string",
            # a comment
            "long_long_long_long_long_long_long_long_long_long_long_string",
        ]
    )
)

天黑后,我到了下面。这显然不是我想要的。

def long_long_long_long_long_long_long_long_long_long_long_long_func(arg: list): ...


long_long_long_long_long_long_long_long_long_long_long_name = long_long_long_long_long_long_long_long_long_long_long_long_func(
    arg=[
        "long_long_long_long_long_long_long_long_long_long_long_string",
        # a comment
        "long_long_long_long_long_long_long_long_long_long_long_string",
    ]
)

环境

  • 黑色,24.8.0(编译:是)
  • Python(CPython)3.9.19
  • macOS 索诺玛 14.5

我的尝试

  • 我已经将示例代码简化到至少可以重现问题的程度。
  • 我查看了 Black 的文档中的换行符、最大长度,但没有对此进行解释
  • 我搜索了 stackoverflow。 com 和 Google 并没有找到说明。
python comments python-black
1个回答
0
投票

出现此问题的原因是 Black 试图遵守其关于行长度和格式的严格规则,即使它有时会以与您期望的方式不同的方式分割行。在您的情况下,问题在于 Black 将注释视为重新格式化该行的信号,这与没有注释时不同。

目前,Black 没有提供一种方法来在涉及注释时保持您想要的括号缩进样式。

如果您想保持原始格式样式,可以使用 Black 的

# fmt:off
# fmt:on
指令。

这是代码。

# fmt: off
def long_long_long_long_long_long_long_long_long_long_long_long_func(arg: list): ...


long_long_long_long_long_long_long_long_long_long_long_name = (
    long_long_long_long_long_long_long_long_long_long_long_long_func(
        arg=[
            "long_long_long_long_long_long_long_long_long_long_long_string",
            # a comment
            "long_long_long_long_long_long_long_long_long_long_long_string",
        ]
    )
)
# fmt: on

希望这对你有一点帮助。

© www.soinside.com 2019 - 2024. All rights reserved.