[英]Multi-line SQL statement formatting in Python using black formatter
[英]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 中發現了這個問題,但這僅適用於內聯命令,這不是我在這里所擁有的。
對於多行代碼,我能做些什么來實現這一點?
您可以使用#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 認為它意味着您計划在將來擴展列表,盡管在這種情況下它只是意味着 Black 的風格不是很可讀。 不幸的是,當列表包含在額外的 function 調用中時,尾隨逗號還不夠神奇。
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],
]
)
(注意最后一個逗號)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.