Python: 为什么使用4个空格缩进?

91 投票
13 回答
114418 浏览
提问于 2025-04-15 12:53

在写Python代码的时候,我只用两个空格来缩进,虽然PEP-8确实推荐用四个空格,但对我来说,两个空格是更习惯的做法。

所以,有谁能说服我用四个空格而不是两个吗?这样做有什么好处和坏处呢?

另外,有没有简单的方法可以把我现有的代码从两个空格转换成四个空格呢?


顺便说一下,PEP-8还严格建议不要使用制表符(tab)来缩进。可以在这里了解更多


总结一下:

好处:

  • 当字符串超过80行时,有更多的空间来排版。
  • 可以直接从代码片段复制代码,粘贴后就能正常工作。

坏处:

  • 如果嵌套的语句层级很深,实际代码的空间就会变少。

谢谢。

13 个回答

67

我觉得真正的问题是,为什么要用空格而不是制表符。

制表符明显更好:

  • 使用制表符几乎不可能出现不一致的缩进(我见过一些代码,通常是4个空格缩进,但有些地方却偏离了一个空格,简单看一下很难判断是7个还是8个空格……如果用制表符就不会出现这种情况,除非你把制表符的宽度设置成1个空格)。
  • 制表符是一个逻辑上的语义表示,用来表示缩进,它允许你(和其他开发者)选择显示多少个“空格”(或者说列),而不会影响到别人的设置。
  • 如果你手边只有“记事本”(或者其他简单的编辑器),那么用制表符输入的按键更少
  • 添加和删除制表符是一个对称的操作。大多数集成开发环境(IDE)在你按下制表键时会自动插入4个空格,但通常在你按下退格键时只会删除1个空格(虽然可以用shift-tab来取消缩进,但那是两个键的组合),或者你可以用鼠标点击缩进中间删除一个字符。
  • 制表符只占用1个字节,而空格占用4个字节(如果代码行数很多,这样可以节省几KB的空间!:p)
  • 你少了一件需要达成一致的事情,因为如果你决定用空格,那么讨论又要开始,大家要选择用多少个空格(虽然大家的共识似乎是4个)。
  • 最后:你觉得自己比理查德·亨德里克斯更好吗

空格的优点:

  • Guido喜欢用空格。
  • 在这里你不能轻易输入制表符,它会转移焦点(不过你可以粘贴一个)。
90

我喜欢用四个空格来缩进函数内部的代码,因为在写函数时,"def"后面加一个空格正好是四个字符。

def·foo():
····pass
156

大家都用4个空格。这是我接受使用4个空格的唯一原因。在我心里,我还是想用制表符(每次缩进一个字符,这样挺合理的,对吧?把缩进和其他空白分开)。我不在乎制表符可以显示成不同的宽度,这对语法没有影响。最糟糕的情况就是有些注释对不齐,真可怕!不过我已经接受了,因为整个Python社区都在用4个空格,所以我也用4个空格。这样,我就可以把别人写的代码片段拼凑在一起,所有的代码都能正常工作。

撰写回答