为什么Python不要求每个缩进级别正好四个空格?
在Python中,空格是有意义的,因为代码块是通过缩进来定义的。
而且,Python的创始人Guido van Rossum建议每个缩进级别使用四个空格(可以参考PEP 8: Python代码风格指南)。
为什么不要求每个缩进级别必须正好是四个空格呢?有没有什么技术上的原因?
看起来,所有支持用空格来定义代码块的理由,也可以用来支持每个缩进级别设置一个确切的空格长度(比如四个空格)。
11 个回答
我最近在 tutor@python.org 的邮件列表上遇到一个有趣的情况——一位盲人程序员在用 Python 编程,他使用一个阅读程序。这个阅读程序似乎不太喜欢多个空格,所以对他来说,使用一个空格会更简单。
其实,没有什么特别的技术理由非得用四个空格不可。我认为反对这种“要求”的最好理由是,程序员们不喜欢被限制,尤其是被那些看起来愚蠢和随意的规则限制。大家都同意四个空格是最好的,大多数编辑器也会自动设置缩进,但有时候你不想用四个空格,比如写一些临时的代码等等,这样就会让程序员觉得被这种随意的(风格)要求压得喘不过气来。
对于大多数人来说,空白的使用并不是个问题,原因有几个。首先,我想不出有哪个(好的)程序员会认为代码格式化是坏事。其次,逻辑上我们需要把代码分成不同的块。很多编程语言用 {} 来分隔。在汇编语言中,通常用标签来分隔。而 Python 选择使用空白其实是相当自然的,至少对于英语来说。当你读书、看报纸或博客时,引用的内容通常会缩进。段落之间会有一两行的空白。章节之间通常在页面末尾和下一页开头都有空白。所以,空白是件好事,但如果强迫程序员遵循你特定的标准,他们可能会去做别的事情,而不是编程。
其实没有什么技术上的原因。要让Python解释器每次缩进都必须用四个空格,其实并不难。
这里有一个使用其他缩进方式的例子:在交互式解释器中输入代码时,用一个空格的缩进非常方便。这样可以减少输入的字符,更容易数出空格的数量,而且可读性不是主要问题(因为代码根本不会保存到文件里)。