繁体   English   中英

在 python 中,如果可能,如何调整黑色格式化程序?

[英]In python, how to tweak Black formatter, if possible?

我知道 Black 是一个固执己见的格式化程序,但我喜欢它所做的一切,除了一件大事。 当我有一个带有多个参数的函数时,而不是像这样显示它:

def example_function(arg_1: str, arg_2: bool, arg_3: int = 0, arg_4: int = 1, arg_5: float = 0.0):
    pass

为了便于阅读,我宁愿将其显示如下

def example_function(
    arg_1: str, 
    arg_2: bool, 
    arg_3: int = 0, 
    arg_4: int = 1, 
    arg_5: float = 0.0
):

这可以通过 Black 或其他格式化程序实现吗? 我多次遇到这个问题,这让我考虑不使用黑色,无论是其他东西还是什么都不使用。 任何想法或意见?

这是因为black的默认行长比您希望的要长——每行 88 个字符

要减少行长度,您可以使用--line-length标志,如此处所述:

https://github.com/psf/black/blob/master/docs/installation_and_usage.md#command-line-options

例如:

$ black --line-length 80 example.py

Black 在这里更详细地解释了--line-length设置:

https://github.com/psf/black/blob/master/docs/the_black_code_style.md#line-length

线长

您可能注意到了特殊的默认行长。 黑色默认为每行 88 个字符,恰好超过 80 个字符的 10%。发现这个数字产生的文件比坚持使用 80(最受欢迎)甚至 79(由标准库使用)要短得多。 总的来说, 90-ish 似乎是明智的选择

如果您按您编写的代码行付费,您可以通过--line-length使用较低的数字。 黑色会尽量尊重这一点。 但是,有时它无法不违反其他规则。 在极少数情况下,自动格式化的代码将超出您分配的限制。

您也可以增加它,但请记住,有视力障碍的人发现处理超过 100 个字符的行变得更加困难。 它还会对典型屏幕分辨率的并排差异审查产生不利影响。 长行也使得在文档或幻灯片中整齐地呈现代码变得更加困难。

强调最后一段。

我建议只保留默认设置。 黑色的美妙之处在于它为你选择,因此抢占了关于哪种方式是“最好的”的任何争论。

现在可以通过在最后一个参数中添加一个尾随逗号来实现。

在您的示例中,您将改为编写:

def example_function(
    arg_1: str, 
    arg_2: bool, 
    arg_3: int = 0, 
    arg_4: int = 1, 
    arg_5: float = 0.0, # <-- Notice the trailing comma
):

https://black.now.sh使用 Black playground 时,我发现您的函数的格式与行长度足够短(特别是 78 个字符) 完全一样。

如果有一个特殊的配置选项来控制专门用于函数参数行的行长度,那可能会很好。 但是在我看来,Black 的免配置方法意味着无法通过任何更定制的选项来控制它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM