
2.1 Python语法特点
不同的编程语言其语法特点也不相同。学习Python需要了解它的语法特点,如代码缩进和注释,下面分别进行介绍。
2.1.1 代码缩进
为了展现层次结构,代码需要按照一定的规则进行缩进。Python采用严格的“缩进”来表示程序的格式框架。缩进是在每一行代码开始前空出一定的空白区域,用来表示代码之间的包含和层次关系。
1. 如何表示缩进
编写代码时,缩进可以使用Tab键或空格键实现。使用空格键的话,一般采用4个空格。而一个Tab键等效于4个空格键,作为一个缩进量。以此类推,2个缩进量可以使用2次Tab键或8个空格键。通常情况下建议使用空格键进行缩进。
2. 缩进的使用
在编写Python代码时,并不是所有的代码都需要缩进。因为缩进是用来表示包含于所属关系的。为了方便讲解,这里将没有使用缩进的代码称为非缩进代码。
【实例2-1】print()这样的简单代码不表示所属关系,不能使用缩进,如图2.1所示。

图2.1 非缩进语句
当编写的代码为分支、循环、函数、类等代码时,常常会用到缩进,用来表示所属关系。
【实例2-2】下面的分支代码使用了缩进,如图2.2所示。

图2.2 包含缩进的代码
图中共有5行代码,前3行代码前面不留空白(顶到左边编写),为非缩进代码;后2行代码前面留有空白,为缩进代码,并且使用了相同的缩进(一个缩进量)。这里的缩进表达了所属关系。相同缩进的代码属于之前最邻近的一行非缩进代码。所以,这里的缩进代码包括以下两行:

它们从属于之前最邻近的一行非缩进代码:

3. 多层缩进
上述代码中使用的一个缩进量,也可以称为单层缩进。程序员编写代码时,代码会进行嵌套使用,这时需要多个缩进量,称为多层缩进。
【实例2-3】下面的代码使用了多层缩进,如图2.3所示。

图2.3 多层缩进
图中,代码print(a-b)前面有两个缩进量,因此:

从属于代码:

代码if 30>a>15:与代码print(a+b) 前面有一个缩进量,因此:

同时从属于代码:

提示:在所属关系中,缩进量相同的代码为同一级别,缩进量多的代码,隶属于比它的缩进量少一个缩进量的相邻代码。
4. 缩进量不合理会抛出异常
Python对代码的缩进量有严格的要求。同一个级别代码的缩进量必须相同。如果使用错误的缩进量,则会抛出异常。
【实例2-4】以下代码使用了错误的缩进量,如图2.4所示。

图2.4 不合理的缩进量
其中,代码print(a+b)和if 30>a>15:为同一级别,但使用的缩进量不同。当执行代码时,抛出异常,并在出现错误的地方显示红色,如图2.5所示。图中的unexpected indent表示缩进量错误。

图2.5 缩进量错误抛出异常
5. 设置缩进单位
在IDLE中,默认以4个空格作为缩进的基本单位。IDLE也提供了设置缩进单位的功能。在菜单栏中,选择Options→Configure IDLE选项,弹出“Settings”对话框,如图2.6所示。在图中的左下方会看到一个滑动条,默认滑动块位于数字4处,表示4个空格。用户根据自己的需求,拖动滑动块到想要设置的位置,然后单击“Ok”按钮保存设置。

图2.6 “Settings”对话框
2.1.2 代码注释
在语文课本中,古诗文、文言文均有一定的标注,用来对特定的句子进行说明,以方便读者更好地理解。代码的注释也是如此,用来对代码进行说明,提高代码的可读性,方便自己或其他人日后理解代码的功能。在执行代码时,注释的内容会被Python解释器忽略,不会被执行。
Python提供的注释可以实现两个功能,分别用于为代码备注信息、将代码注释掉。下面分别介绍这两个功能。
1. 代码备注信息
Python中的代码可以是单独的一行,也可以是多行的代码,共同完成一项任务或作用。同样,注释信息可以为单行代码进行注释,也可以为多行代码进行注释。
(1)单行注释。
单行注释使用“#”作为其符号,“#”后面的内容均为注释的信息,直到换行结束。其语法如下:

单行注释可以放在要注释代码的前一行,如图2.7所示。

图2.7 注释信息放在代码的前一行
单行注释也可以放在要注释代码的右侧,如图2.8所示。

图2.8 注释信息放在代码的右侧
(2)多行注释。
多行注释是将注释的内容放在一对三个单引号(''' ''')或三个双引号(""" """)之间。这时,注释的内容可以分为多行编写。其语法如下:

或者

通常,多行注释用来标明作者、版权信息、功能等,如图2.9所示。

图2.9 多行注释
2. 将代码注释掉
将代码注释掉是指使用“#”放在代码的左端。这样,右侧的代码就不会被执行了。例如,在下面代码中,注释掉了最后两行代码,代码颜色变为红色。如图2.10所示。

图2.10 成功注释掉代码
IDLE也提供了相关菜单选项,可以对选中行的代码进行注释和取消注释。
【实例2-5】下面通过菜单选项,对代码进行注释。
(1)选中对应的代码,如图2.11所示。其中,阴影部分为选中要被注释掉的代码。

图2.11 选中要被注释掉的代码
(2)在菜单栏中,选择Format→Comment Out Region选项,将代码注释掉,如图2.12所示。最后两行代码的左端出现了“##”,代码变为红色。

图2.12 成功注释掉代码
【实例2-6】通过菜单选项,还可以取消对代码的注释。
(1)选中要取消注释的代码,如图2.13所示。其中,阴影部分为选中要取消注释的代码。

图2.13 选中要取消注释的代码
(2)在菜单栏中选择Format→Uncomment Region选项,选中的代码没有了注释,如图2.14所示。

图2.14 成功取消了注释