问题 Python PEP 8文档字符串行长[关闭]


我最近开始认为遵循PEP 8是一个好主意。我让我的编辑器显示80列标记,现在我正在尝试换行以适应它。我的问题是这个。在PEP 8中它说:

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

说得通。

[...]对于流动的长文本块(文档字符串或注释),建议将长度限制为72个字符。

为什么72?为什么79不适用于文档字符串或注释?


7422
2018-03-15 17:13


起源

我有点困惑。评论的72个字符限制是否包括缩进? - Elias Zamaria
此外,长篇文字的窄栏更易读,想想报纸。 - Gringo Suave


答案:


我相信这是文本文档的遗留问题:

在打字机时代结束时,大多数设计都面向72   CPL,从每英寸12个字符的间距,乘以6   英寸(参见例如IBM Selectric)。这将确保至少1   每个保证金英寸,美国政府当时有   标准化为8 1/2×11“纸张。

资源

许多纯文本文档仍然符合传统的72 CPL。

我认为这就像文档字符串经常在代码之外的上下文中使用一样,因此符合大多数纯文本文档用来尝试并保持尽可能一致的样式是有意义的。例如,文本 man 页面通常包装为72个字符。通过将文档字符串限制为72个字符,输出 help() 反映了这个。

关于程序员的这个问题 也可能是相关的。


9
2018-03-15 17:16



作为一个评论 - 这是一个猜测 - 我没有消息来源说这是原因,它似乎对我来说 - 如果有人有更具体的东西,我会感兴趣。 - Gareth Latty
这是一个很好的猜测。 - Martijn Pieters♦
该文本由Guido添加 这个变化集 所以你必须问他的来源。它可以在邮件列表中详细说明。 - Martijn Pieters♦
从那个时候搜索了列表档案后,我找不到任何有关变化的讨论。无论Guido基于什么来源,都没有透露。 - Martijn Pieters♦


文档字符串通常使用其功能缩进,并以三引号开头和结尾:

def foo(bar, baz):
    """Frobnicate the foobars into baz

    Parameters are ham and spammed.

    """

这是79 - 4 - 3 =剩下72个字符。


3
2018-03-15 17:16



我很确定72个字符的限制是为了包含这些限制。 - Gareth Latty
或许,恩。不确定自己,但你也可以对你的答案有所了解。 - Martijn Pieters♦
这仅适用于docstring的第一行,对吧?在此之后,您只能被限制为79 - 4 = 75个字​​符。如何在第一行之后轻松地尊重72限制? - iago-lito
@ Iago-lito:我对这个答案的解释是,只有第一行限制为72个字符,后续行将得到75.如果你不同意,你必须手动检查这个限制或使用支持检查这个限制的linter限制。 - Martijn Pieters♦
但我喜欢这种解释= D它是否符合PEP标准? - iago-lito


行应该是79个字符的原因是它们可以适合80字符宽的终端(显然它们仍然存在)。在docstring上使用72个字符的原因是,这意味着您在两侧都有相等的填充(毕竟文档字符串是缩进的)并且仍然适合80个字符的宽度。


1
2018-03-15 17:16



但是80个字符宽的终端也不适合80个字符吗?! - Iulian Onofrei