我知道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,不管是别的还是什么都不用。有任何想法或意见吗?
答案 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的无配置方法意味着没有办法通过任何更定制的选项来控制它。