如何让 pylint 和 autopep8 就如何缩进包装的函数定义达成一致?

Jan*_*ard 8 python pylint autopep8

如何让美化器autopep8和 linterpylint就如何缩进我的代码达成一致,而不完全禁用缩进格式/linting?我不介意它是第一种格式还是第二种格式,只要我可以Alt+F在 VSCode 中点击并信任输出。

美化者希望代码像这样缩进......

# autopep8 prettifier
def sum(
    a: int,
    b: int
) -> int:
    """Return the sum of a and b."""
    return a + b
Run Code Online (Sandbox Code Playgroud)

...但 linter 想要这样。

# pylint linter
def sum(
        a: int,
        b: int
    ) -> int:
    """Return the sum of a and b."""
    return a + b
Run Code Online (Sandbox Code Playgroud)

PEP8 标准将此列为格式化函数的一种方式,但他们没有提到当右括号放在单独的行上时如何缩进。我真的更喜欢有额外的换行符,因为这将输出格式放在自己的行上,它减少了将空行作为函数体中第一行的冲动。我稍微喜欢上面的第一个选项,因为这个选项将右括号与必须打开一个的行对齐。当使用类型提示时,Google 的 Python 风格指南推荐第一个缩进示例。

# PEP8 standard
def sum(
        a: int,
        b: int) -> int:
    """Return the sum of a and b."""
    return a + b
Run Code Online (Sandbox Code Playgroud)

(对于上面的示例,最好将函数声明简单地放在一行中,但是如果不使行太长,这并不总是可行的。)

Pie*_*las 1

您可以升级到最新的 pylint。bad-continuationbad-whitespace在版本 中从 pylint 中删除2.6.0pylint 团队认为blackorautopep8可以比 Pylint 更好地帮助您格式化。

更一般地说,我认为如果您使用自动格式化程序,那么您可以禁用 pylint 关于格式化的消息。