黑色格式化程序 - 忽略特定的多行代码
Black formatter - Ignore specific multi-line code
我想通过 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 问题,但这只适用于内联命令,我这里没有。
我可以做些什么来实现多行代码吗?
您可以按照问题链接中的说明使用 #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
再次激活格式
如果您愿意稍微更改您的代码,那么 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,虽然在这种情况下它只是意味着黑色的风格不是很可读。不幸的是,当列表包含在那个额外的函数调用中时,尾随逗号并不神奇足以工作。
np.array(
[
# just say anything
[1, 0, 0, 0],
[0, -1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, -1],
]
)
这是因为 Black 无法战胜 Python 缺少内联注释!
最新版本的黑色(>=21.0)考虑到了最后一个元素后的逗号。
所以:
np.array(
[
[1, 0, 0, 0],
[0, -1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, -1]
]
)
将被格式化为:
np.array([[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 1, 0], [0, 0, 0, -1]])
(注意没有最后一个逗号)
相反
np.array([[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 1, 0], [0, 0, 0, -1],])
将被格式化为:
np.array(
[
[1, 0, 0, 0],
[0, -1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, -1],
]
)
(注意最后一个逗号)
我想通过 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 问题,但这只适用于内联命令,我这里没有。
我可以做些什么来实现多行代码吗?
您可以按照问题链接中的说明使用 #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
如果您愿意稍微更改您的代码,那么 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,虽然在这种情况下它只是意味着黑色的风格不是很可读。不幸的是,当列表包含在那个额外的函数调用中时,尾随逗号并不神奇足以工作。
np.array(
[
# just say anything
[1, 0, 0, 0],
[0, -1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, -1],
]
)
这是因为 Black 无法战胜 Python 缺少内联注释!
最新版本的黑色(>=21.0)考虑到了最后一个元素后的逗号。
所以:
np.array(
[
[1, 0, 0, 0],
[0, -1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, -1]
]
)
将被格式化为:
np.array([[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 1, 0], [0, 0, 0, -1]])
(注意没有最后一个逗号)
相反
np.array([[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 1, 0], [0, 0, 0, -1],])
将被格式化为:
np.array(
[
[1, 0, 0, 0],
[0, -1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, -1],
]
)
(注意最后一个逗号)