Python编码规范:pylint发现错误的连续缩进问题。

28

我使用pylint检查了我的Python代码,并发现了这个约定问题:

C:11, 0: Wrong continued indentation before block.
                    + this_time <= self.max):
                    ^   | (bad-continuation)

我尝试了四次改进但问题仍然存在,有人能帮忙吗?谢谢!

if len(remaining_obj_list) > 0:
    for i in a_list:
        this_time = self.__get_time(i)
        for remaining_obj in remaining_obj_list:
            if (remaining_obj.get_time() # to fit 78 char rule
                + this_time <= self.max):
                i.append(remaining_obj)
                remaining_obj.set_used(True)
        if 0 == len(self.__get_unused_list):
            break
4个回答

40

Pylint不希望这样的延续开始于下一个缩进块所在的同一列。此外,注意该消息包括了对它认为是正确的列的提示。


24
我从未意识到竖线的位置是提示所需缩进的位置。 - DreadPirateShawn

2
尝试将+放在上一行:
        if (remaining_obj.get_time() +
            this_time <= self.max):

作为一个旁注,你可能需要考虑导致你的代码需要在大约40个字符范围内适应的因素——也许你有太多的缩进层级,你的代码可以被重新设计以减少嵌套块。

0
根据PEP8,在二元运算符周围的首选断点是运算符之前。这曾经不是这种情况,但为了与数学公式约定一致而改变了。

19
PEP8 改变了这个建议,现在首选的方式是在运算符前换行。 - flornquake
这个答案应该被编辑,因为它显示了错误的信息。 - winklerrr
@flornquake 呃呃呃呃。(实际上,我不确定哪个更好。根据情况,任何一种都可以更美观或易读...) - Mateen Ulhaq
在现实生活中,我总是看到人们将操作放置在类似 a \n + b \n + c 的位置。 - Guimoute

0

检查是否存在多余的制表符(在Sublime中:Ctrl + F,然后输入一个空格),并将它们替换为正确数量的空格。我曾经遇到过同样的问题,虽然PyLint抱怨了行连续性,但实际上错误是由于错放的制表符触发的。

在缩进时,PyLint似乎只计算空格,并且如果数字不是4的倍数,则会抛出此错误。根据编辑器的不同,错放的制表符可能不会立即显示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接