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