在python中,如果可能的话,如何调整Black Formatter?

时间:2019-12-04 20:01:30

标签: python code-formatting

我知道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,不管是别的还是什么都不用。有任何想法或意见吗?

3 个答案:

答案 0 :(得分:8)

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

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

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
):

答案 1 :(得分:2)

这是由于black的默认行长比您想要的长-每行88个字符

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

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

例如:

$ black --line-length 80 example.py

黑色在这里更详细地说明了--line-length设置:

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

  

行长

     

您可能已经注意到了特殊的默认行长。 黑色默认   到每行88个字符,恰好是80个字符的10%。   发现数字产生的文件比粘贴的文件短得多   80(最受欢迎),甚至79(标准库使用)。   通常,90-ish seems like the wise choice

     

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

     

您也可以增加它,但请记住,有视力的人   残疾人发现线长超过100的工作更加困难   字符。它还不利地影响并排差异比较   典型的屏幕分辨率。较长的行也使呈现更加困难   整齐地编写文档或谈话幻灯片中的代码。

最后一段强调。

我建议仅保留默认设置。 Black 的优点在于它可以为您选择,因此优先于“最佳”

的任何论点。

答案 2 :(得分:1)

https://black.now.sh处使用Black Playground时,我发现您的功能完全按照when the line length was short enough的格式重新格式化(特别是78个字符)。

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