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

Pat*_*lva 15 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
Run Code Online (Sandbox Code Playgroud)

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

def example_function(
    arg_1: str, 
    arg_2: bool, 
    arg_3: int = 0, 
    arg_4: int = 1, 
    arg_5: float = 0.0
):
Run Code Online (Sandbox Code Playgroud)

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

dam*_*mon 24

这是因为默认的行长度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
Run Code Online (Sandbox Code Playgroud)

黑色--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 个字符的行变得更加困难。它还会对典型屏幕分辨率的并排差异审查产生不利影响。长行也使得在文档或谈话幻灯片中整齐地呈现代码变得更加困难。

强调最后一段。

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

  • 有一个名为“-l”的别名 (4认同)
  • 谢谢,我最终将其减少到 60,因为我通常在带有拆分窗口的 VScode 上工作,这非常适合。很好的答案!我也很喜欢关于 90 年代的视频,很好看。+1 (2认同)
  • 改变线长度的另一个问题落在跑黑棋的“下一个人”身上。他必须知道“你”选择了什么,否则很多行都会被修改。 (2认同)

小智 13

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

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

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
):
Run Code Online (Sandbox Code Playgroud)

  • 太糟糕了,没有一个选项可以每次都添加这个额外的逗号,并且也有 1 个参数/行,而不是调整行长度 Prettier 处理这样对 NodeJs TS env 来说更好,我认为黑色可以从这个工具中得到启发 (2认同)