pep8“混合空格和制表符”错误与“缩进不足以产生视觉缩进”冲突

时间:2019-08-04 08:52:05

标签: python indentation pep8

无论我以哪种方式编写,以下函数都会引发错误。

@staticmethod
def _generate_clone_spec(param1=None,
                         param2=None,
                         param3=None,
                         param4=False,
                         param5=False):

根据PEP8,上面的代码是在函数中对齐参数的可接受方法。

但是上面显示的代码抛出以下错误:

缩进包含空格和制表符

如果我将所有空格都转换为制表符,则如下所示:

@staticmethod
def _generate_clone_spec(param1=None,
                        param2=None,
                        param3=None,
                        param4=False,
                        param5=False):

在上面的代码中,空格和制表符的混合错误消失了,但随后我遇到了一个新错误:对于视觉缩进(E127),缩进连续行

根据我的判断,我是否可以通过以下方式编写函数,它既符合两个规则,又有另一种方法吗?

@staticmethod
def _generate_clone_spec(
    param1=None,
    param2=None,
    param3=None,
    param4=False,
    param5=False):

2 个答案:

答案 0 :(得分:1)

答案

使用空格。然后使用第一个示例,但仅包含空格。虔诚地停止pep8之后。我们再也没有80个字符宽的监视器了,也没有使代码看起来更好,这太可怕了,尤其是当它在语法上正确并且在这种情况下与空格无关时。

推理

免责声明:我想出了这个,基本上,这是我的个人看法。

在决定在任何类型的编程项目中使用制表符还是空格时,我从未见过更好的“规则”,但这是这样的:

如果通过用空格填充代码来格式化代码,则客观地,无论您如何看待,最好是仅使用空格的最佳决定。

否则,它就是您想要的。

这不仅避免了Python中的“ mIxEd tAbS n sPaCeS”错误,而且避免了为何在键盘上按回车键会导致光标不稳定地跳动随机空格的问题。

如果用空格填充并使用空格,您将始终有...空格。

如果您不按空格填充,而是使用制表符...您将始终具有返回按钮,可以将n个空格跳回。

其他一切都是精神错乱。

还,他妈的pep8。只要保持您自己的代码中的一致性,我们就可能一整天都在忙,而永远不会想出如何正确识别的方法。

答案 1 :(得分:0)

与第一个示例中的代码完全一致,但是请确保所有空格仅由空格字符组成(即,不包含制表符)。

@staticmethod
def _generate_clone_spec(param1=None,
                         param2=None,
                         param3=None,
                         param4=False,
                         param5=False):

注意:大多数现代代码编辑器应用程序都提供了一种设置,当您按下键盘上的tab键时可以自动写入多个空格字符(而不是制表符)。这是避免以空格和制表符结尾的可靠方法。