1

在尝试遵守 PEP8 时,有时很难保持在 80 个字符的限制内。例如:

for i in range(10):
    for k in range(10):
        if k < 5:
            try:
                with line as open(file):
                    if line.blah in text:
                        dosomethingwithnospaceleft(bla,
                                                   bla,
                                                   )

我的观点是,80 个字符的限制有时会变得有点荒谬,并且在某些方面难以阅读。这种格式背后的原因是什么?对于大多数不使用编辑器 > 20 岁的人来说,这不是一个过时的标准吗?

4

2 回答 2

6

限制行长是好的,因为它通常会使文本更具可读性。此外,缩进这么多级别通常表明您应该将某些内容分解到不同的函数中。

您可能还想提前继续,为您节省缩进级别 ( if k >= 5: continue, if line.blah not in text: continue)。

于 2012-06-28T07:55:05.847 回答
0

来自 PEP-008

最大线长

将所有行限制为最多 79 个字符。

周围还有很多设备限制在 80 个字符行;此外,将窗口限制为 80 个字符可以让多个窗口并排放置。此类设备上的默认包装会破坏代码的视觉结构,使其更难理解。因此,请将所有行限制为最多 79 个字符。对于流动的长文本块(文档字符串或注释),建议将长度限制为 72 个字符。

包装长行的首选方法是在括号、方括号和大括号内使用 Python 的隐含行继续。通过将表达式括在括号中,可以将长行分成多行。这些应该优先使用反斜杠来继续行。确保适当缩进续行。打破二元运算符的首选位置是在运算符之后,而不是在它之前。一些例子:

class Rectangle(Blob):

    def __init__(self, width, height,
                 color='black', emphasis=None, highlight=0):
        if (width == 0 and height == 0 and
            color == 'red' and emphasis == 'strong' or
            highlight > 100):
            raise ValueError("sorry, you lose")
        if width == 0 and height == 0 and (color == 'red' or
                                           emphasis is None):
            raise ValueError("I don't think so -- values are %s, %s" %
                             (width, height))
        Blob.__init__(self, width, height,
                      color, emphasis, highlight)
于 2012-06-28T07:56:47.573 回答