零基础学Python(第2版)
上QQ阅读APP看书,第一时间看更新

2.2.2 代码缩进与冒号

代码缩进是指通过在每行代码前输入空格或制表符的方式,表示每行代码之间的层次关系。任何编程语言都需要用代码缩进清晰程序的结构,采用代码缩进的编程风格有利于代码的阅读和理解。对于C、C++、Java等语言,代码缩进只是作为编程的一种良好习惯而延承下来。对于Python而言,代码缩进是一种语法,Python语言中没有采用花括号或begin…end…分隔代码块,而是使用冒号和代码缩进区分代码之间的层次。

使用IDE开发工具或EditPlus等编辑器书写代码时,编辑器会自动缩进代码、补齐冒号,提高编码效率。下面这段代码中的条件语句采用了代码缩进的语法。


01     x = 1                                # 定义x并赋值
02     if x == 1:                          # if判断x是否等于1
03         print( "x =", x)              # 代码缩进
04     else:
05         print( "x =", x)                  # 代码缩进
06         x = x + 1                        # 代码缩进
07     print ("x =", x)                   # 输出x的值

【代码说明】

·第1行代码创建了变量x,并赋值为1。在赋值运算符的两侧各添加一个空格,这是一种良好的书写习惯,提高了程序的可读性。

·第2行代码使用了条件语句if,判断x的值是否等于1。if表达式后输入了一个冒号,冒号后面的代码块需要缩进编写。本行代码与第1行代码处于同一个层次,直接从最左端书写代码。

·第3行代码表示x的值等于1时输出的结果。当if条件成立时,程序才能执行到第3行,所以第3行代码位于第2行代码的下一个层次。在编码时,首先在最左端输入4个空格或制表键(不建议),然后再书写print语句。输出结果:


x = 1

·第4行代码的else关键字后是一段新的代码块。当x的值不等于1时,程序将执行第5、6行代码。

·第5、6行代码采用缩进式的代码风格。

·第7行代码输出结果:


x = 1

Python对代码缩进要求非常严格。如果程序中不采用代码缩进的编码风格,将抛出一个IndentationError。下面这段代码是错误的编码方式。


01     x = 0
02     if x == 1:
03     print( "x =", x)
04     else:
05         print( "x =", x)           # 代码缩进
06         x = x + 1                    # 代码缩进
07     print ("x =", x)

【代码说明】第3行没有缩进代码,Python不能识别出代码的层次关系,误认为if x==1:语句后没有代码块。代码运行后输出如下错误:


IndentationError: expected an indented block

注意 如果缩进的代码前只有一个空格或几个制表符也是符合语法的,但是这种写法并不推荐。最佳的方式是编码前统一代码的书写规则,所有代码前的空格数保持一致,最好使用4个空格缩进。

每行代码缩进的情况不同,代码执行的结果也不同。例如,前文提到的hello.py,else子句包含的两条语句都采用了代码缩进的格式,这两条语句组成了一个代码块。如果把hello.py的代码修改为如下的内容,则变量x的值将有所变化。


01     x = 1
02     if x == 1:
03         print( "x =", x)           # 代码缩进
04     else:
05         print( "x =", x)           # 代码缩进
06     x = x + 1
07     print( "x =", x)

【代码说明】

·第6行代码与第1行代码处于同一个层次,是主程序必须执行的代码,因此变量x的值为2。

·第7行代码的输出结果如下。


x = 2

注意 当程序出现问题时,程序员首先要检查代码的书写格式,查看是否因为代码缩进的问题导致了不期望的计算结果。