超过行长时的缩进

时间:2019-06-21 21:13:12

标签: python

我了解Python中的缩进规则,直到您开始发现行数超出行长限制且需要继续之前。

如果不允许我在一行中包含超过100个字符,缩进以下代码的正式,最简洁的方法是什么?

def OnKeyDownEvent(self, event):
    if (event.Message == HookConstants.WM_KEYDOWN or event.Message == HookConstants.WM_KEYDOWN):
        self.count_key_down += 1

我会尝试:

def OnKeyDownEvent(self, event):
    if (event.Message == HookConstants.WM_KEYDOWN
        or event.Message == HookConstants.WM_KEYDOWN):
        self.count_key_down += 1

但是在主体和条件处于相同缩进级别的情况下会出现错误。

2 个答案:

答案 0 :(得分:3)

我通常的解决方案是,如果我在开始新的缩进级别之前继续行,则将延续两个缩进放到内部,而不是一个缩进:

def OnKeyDownEvent(self, event):
    if (event.Message == HookConstants.WM_KEYDOWN or
            event.Message == HookConstants.WM_KEYDOWN):
        self.count_key_down += 1

,或者,如果我要枚举某物的列表,则无论该列表从何处开始-以页面上更右侧的那个为准。我还将运算符放在 initial 行上,而不是在 continuing 行上,以使读者和解释器都清楚该表达式尚未结束。在您的代码中,您将整个表达式括在括号内,这具有相同的目的。

您可以注释代码,但是感觉最清晰,然后通过一个lint运行它,然后重新格式化代码,使其符合PEP8标准。


在您的具体情况中,写此条件的一种更简洁的方法是

def onKeyDownEvent(self, event):
    if event.Message in [HookConstants.WM_KEYDOWN, HookConstants.WM_KEYDOWN]:
        self.count_key_down += 1

通常对于“如果x == this或this或this”条件是一个很好的解决方案,并且比编写多个if语句更简洁。不过,这更具体。

答案 1 :(得分:1)

没有任何一种官方方法,必须遵循PEP8准则。

有一个叫做Black的代码格式化程序,它变得非常流行,您可以尝试here。它会像这样格式化您的代码:

def OnKeyDownEvent(self, event):
    if (
        event.Message == HookConstants.WM_KEYDOWN
        or event.Message == HookConstants.WM_KEYDOWN
    ):
        self.count_key_down += 1

可能是因为如果您在条件中添加了另一个子句,则结果差异将很小,即仅添加一行,没有删除或更改。