我想通过black
python格式化程序忽略特定的多行代码。特别是,它用于np.array
或格式化时难看的矩阵构造。下面是示例。
np.array(
[
[1, 0, 0, 0],
[0, -1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, -1],
]
)
# Will be formatted to
np.array([[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 1, 0], [0, 0, 0, -1]])
我在black
的github中发现了this问题,但这仅适用于内联命令,而我在这里没有。
对于多行代码,我可以做些什么吗?
答案 0 :(得分:4)
您可以按照链接的问题中的说明使用#fmt: on/off
。在您的情况下,它看起来像:
# fmt: off
np.array(
[
[1, 0, 0, 0],
[0, -1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, -1],
]
)
# fmt: on
# fmt: off
禁用以下所有行的格式设置,直到使用# fmt: on
重新激活格式设置为止
答案 1 :(得分:4)
如果您愿意稍微更改代码,那么Black会单独留下以下任一内容:
contents = [
[1, 0, 0, 0],
[0, -1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, -1],
]
np.array(contents)
这是因为多行列表中的结尾逗号是魔术。 Black takes it to mean that you plan to extend the list in future,尽管在这种情况下,这仅意味着Black的风格不太可读。不幸的是,当列表包含在额外的函数调用中时,尾部逗号不足以使它们正常工作。
np.array(
[
# just say anything
[1, 0, 0, 0],
[0, -1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, -1],
]
)
这是因为Black不能胜过Python缺少内联注释!