
2.1 严格的缩进规则

↑扫码看视频
如果读者学习过其他的高级程序设计语言,就会知道严格的缩进规则会使程序代码的结构变得清晰。在本节中,将详细讲解Python语言代码缩进的基本知识。
例如下面是一段缩进格式的C语言代码。

在上述代码通过使用缩进格式后,整个代码的结构一目了然,例如其中加粗倾斜的两行代码是并列(同层次)的。如果不使用缩进格式,将上述代码写在同一行内,但是这样就难以理解这行代码的功能含义了。
Python语言对缩进的要求十分严格,下面是Python对缩进的语法规定。
(1)要求编写的代码最好全部使用缩进来分层(块),并且要求每一级缩进的空白必须一样,否则程序会报错。也就是说,同一层次的代码必须有相同的缩进,每一组这样的语句称为一个块。
(2)行尾的冒号“:”表示下一行代码缩进的开始,在后面的代码中(例如分支语句)必须使用缩进。即使在程序中没有使用括号、分号、大括号等进行语句(块)的分隔,使用缩进后的代码的结构也会显得非常清晰。
(3)只能使用空白实现缩进,建议使用4个空格来表示每一级的缩进。虽然使用〈Tab〉键或其他数目的空格也可以编译通过,但不符合编码规范。支持〈Tab〉键或其他数目的空格仅仅是为了兼容旧版本的Python程序和某些有问题的编辑器,确保使用数量一致的缩进空格,否则编写的程序容易出现错误。

实例文件suojin.py的具体实现代码如下所示。

在上述代码中,使用了4个空格的缩进格式,并且if True行前的空格数与else行前的空格数完全一样,如果不一样程序会报错。执行后的结果如图2-1所示。

图2-1 执行结果
再看如下所示的代码,分别使用了空格和〈Tab〉键不同的缩进方式。

在上述代码中,实现缩进的方式不一致,有的是通过〈Tab〉键实现的,有的是通过空格实现的,这是Python语法规则所不允许的,所以执行后会出错,出错提示如图2-2所示。

图2-2 出错提示