1

python黑色格式化程序可以嵌套长列表和集合吗?例如:

输入

coworkers = {"amy", "bill", "raj", "satoshi", "jim", "lifeng", "jeff", "sandeep", "mike"}

默认输出

coworkers = {
    "amy",
    "bill",
    "raj",
    "satoshi",
    "jim",
    "lifeng",
    "jeff",
    "sandeep",
    "mike",
}

期望的输出

coworkers = {
    "amy", "bill", "raj", "satoshi", "jim",
    "lifeng", "jeff", "sandeep", "mike",
}
4

1 回答 1

1

这是不可能的,因为 Black 使用的编码风格可以被视为 PEP 8 的严格子集。请阅读此处的文档。具体来说:

至于垂直空白,Black 尝试每行呈现一个完整的表达式或简单语句。如果这符合分配的行长,那就太好了。

# in:
j = [1,
     2,
     3
]

# out:
j = [1, 2, 3]

如果不是,黑方将查看第一个外部匹配括号的内容并将其放在单独的缩进行中。

# This piece of code is written by me, it isn't part of the original doc
# in
j = [1, 2, 3, 4, 5, 6, 7]

# out
j = [
    1, 2, 3, 4, 5, 6, 7
]

如果这仍然不符合要求,它将使用相同的规则进一步分解内部表达式,每次缩进匹配的括号。如果匹配括号对的内容是逗号分隔的(如参数列表或字典文字等),那么黑方将首先尝试将它们与匹配的括号保持在同一行。如果这不起作用,它将把它们都放在单独的行中。

于 2021-03-11T09:58:52.770 回答