【问题标题】:Is 3-space indentation required in reST?reST 中是否需要 3 个空格缩进?
【发布时间】:2018-01-17 22:38:20
【问题描述】:

我正在使用 Sphinx 记录我的 Python 代码,并阅读 in the Python developer's guide(我认为在其他地方也是如此)reST 文件使用 3 个空格的缩进:

所有 reST 文件都使用 3 个空格的缩进;不允许使用标签。

我为索引文件复制的示例就是这种情况,我的 IDE 选择了 3 空格缩进并将其用于整个页面的其他一些文件。 sphinx-apidoc 扩展也为它构建的modules.rst 文件使用了 3 个空格。

另一方面,由于 Python 使用 4 个空格缩进,我所有的文档字符串都以 4 个空格缩进。而且sphinx-apidox生成的.. automodule::指令缩进了4个空格。

关键是,这一切仍然有效!所以我想知道 3 空格缩进是否是必需的,或者它是否是一种好的做法,但仅在风格方面? (如果是这样,为什么 Python 的所有东西都是 4 空格缩进的?)

或者在某些情况下没有 3 空格缩进会破坏我的构建?

我看过的其他地方


我开始认为 Python 开发人员指南可能是异常,而不是其他一切,特别是因为在我的所有搜索中,我在工作时基本上没有讨论过“3 或 4 空间问题”使用 Sphinx 和 Python。

【问题讨论】:

  • 您引用的 3-space 规则来自样式指南。这是一个项目的风格规则。
  • 好的,这里的“项目”是 Python 官方文档吗?例如,它是 docs.python.org 上文档的样式指南?
  • 是的。您正在阅读面向 Python 本身的开发人员的指南。
  • 我发现(由于缺乏严格的规范,通过反复试验)带有内容的指令要求内容缩进 3 个空格。 2 空格和内容不被识别为指令的一部分; 4 个空格和内容被视为每行都以空格开头。这对于code 和其他文本显示指令来说真的很烦人,因为东西本身有 4 个空格缩进,而开始缩进必须是 3。

标签: python python-sphinx restructuredtext


【解决方案1】:

正如您通过对权威来源和其他地方的研究发现的那样,没有明确的缩进规范,除了选项列表最少 2 个空格和脚注最少 3 个空格。请参阅specification on indentation for reStructuredText

也就是说,有一些建议。

  1. 选择一种样式并使其与您的文档保持一致。
  2. IDE 经常抱怨缩进不正确,例如 Python 中的文档字符串,因此使用 4 个空格可以避免这些警告。
  3. IDE 可以设置为代码缩进 4 个空格,那么为什么不对文档保持相同呢?
  4. 见我的bonus tip about indenting for numbered lists

【讨论】:

  • 我知道建议说“避免像'谢谢'这样的 cmets”,但这是我的第一个 SO 问题,所以...感谢您的建议,编号列表的奖励提示很棒! (我很欣赏它既使使用 4 空格缩进更容易,又使 10-99 号的外观保持一致)
猜你喜欢
  • 1970-01-01
  • 2014-06-21
  • 2011-05-17
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 1970-01-01
  • 2020-04-04
  • 2019-09-26
相关资源
最近更新 更多