python black formatter可以嵌套长列表和集合吗?例如:
输入
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",
}
5条答案
按热度按时间ftf50wuq1#
您可以暂时停用黑色
得到与
改革为
um6iljoc2#
这是不可能的,因为Black使用的编码风格可以被视为PEP 8的严格子集。请阅读docs here。具体来说:
对于垂直空格,Black尝试每行呈现一个完整的表达式或简单的语句。如果这符合分配的行长度,那就太好了。
如果没有,Black将查看第一个外部匹配方括号的内容,并将其放在单独的缩进行中。
如果这仍然不符合要求,它将使用相同的规则进一步分解内部表达式,每次都缩进匹配的方括号。如果匹配的方括号对的内容是逗号分隔的(如参数列表或dict文字等),那么Black将首先尝试将它们与匹配的方括号保持在同一行。如果这不起作用,它将把它们放在单独的行中。
eivgtgni3#
一些解决办法这个讨厌的黑色功能
下面的代码在black下是不变的
请注意:
1.你需要空的
{}
1.将“john”放入前面的集合中将导致换行符行为,因为达到了最大行长度(黑色默认值为88)
1.在集合中不使用尾随逗号。更多信息请访问https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html#the-magic-trailing-comma
jv4diomz4#
字符串列表/集合的好解决方案
你可以用
,
字符分割一个字符串。虽然这个解决方案不是通用的,但它有一个很好的紧凑的代码表示。下面的代码在black下是不变的
黑色:
从某个变量生成字符串也非常简单:
envsm3lx5#
这是我对黑色唯一的痛点。其他的一切都是完美无瑕的。我的变通方法有点复杂,但现在开始。
1.我使用Minifier缩小了这个长列表,使用Python Minifier并取消勾选提升文字、重命名局部变量和重命名全局变量。
1.我将这一行粘贴到我的Python文件或随机的Python文件中。
1.我在文件上运行
yapf
以获得整洁的列表。1.最后,我将标签
fmt: off
粘贴在整洁列表之前,然后粘贴fmt:on
。是的,这是太多的工作,但至少它得到它完成。