2.2.2 代码缩进与冒号 代码缩进是指通过在每行代码前键入空格或制表符的方式,表示每行代码之间的层次关系。任何编程语言都需要代码缩进规范程序的结构,采用代码缩进的编程风格有利于代码的阅读和理解。对于C、C++、Java等语言,代码缩进只是作为编程的一种良好习惯而延承下来。对于Python而言,代码缩进是一种语法,Python语言中没有采用花括号或begin...end...分隔代码块,而是使用冒号和代码缩进来区分代码之间的层次。 使用IDE开发工具或EditPlus等编辑器书写代码时,编辑器会自动缩进代码、补齐冒号,提高编码效率。 【例2-6】演示代码中的条件语句采用代码缩进的语法。 # Filename: code.py x = 1 if x == 1: print "x =", x# 代码缩进 else: print "x =", x# 代码缩进 x = x + 1# 代码缩进 print "x =", x 第2行代码创建了变量x,并赋值为1。在赋值运算符的两侧各添加一个空格,这是一种良好的书写习惯,提高了程序的可读性。 第3行代码使用了条件语句if,判断x的值是否等于1。if表达式后输入了一个冒号,冒号后面的代码块需要缩进编写。本行代码与第1行代码处于同一个层次,所以直接从最左端书写代码。 第4行代码表示x的值等于1时输出结果。当if条件成立时,程序才能执行到第4行,所以第4行代码位于第3行代码的下一个层次。在编码时,首先在最左端输入4个空格或制表键,然后再书写print语句。输出结果: x = 1 第5行代码的else保留字后是一段新的代码块。当x的值不等于1时,程序将执行第6、第7行代码。 第6行、第7行代码采用缩进式的代码风格。 第8行代码输出结果: x = 1 python对代码缩进的要求非常严格。如果程序中不采用代码缩进的编码风格,将抛出一个IndentationError异常。 【例2-7】演示错误的缩进方式。 x = 0 if x == 1: print "x =", x else: print "x =", x# 代码缩进 x = x + 1# 代码缩进 print "x =", x 第3行没有缩进代码,python不能识别出代码的层次关系,python误认为if x == 1:语句后面没有代码块。代码运行后输出如下错误信息: IndentationError: expected an indented block 注意如果缩进的代码前只有一个空格或几个制表符也是符合语法要求的,但是不推荐使用这种写法。最佳的方式是编码前统一代码的书写规则,所有代码前的空格数保持一致,最好使用4个空格缩进。 每行代码缩进的情况不同,代码执行的结果也不同。例如,在【例2-6】中,else子句包含的两条语句都采用了代码缩进的格式,这两条语句组成了一个代码块。 【例2-8】把【例2-6】中的代码修改为如下的内容,则变量x的值将有所变化。 x = 1 if x == 1: print "x =", x# 代码缩进 else: print "x =", x# 代码缩进 x = x + 1 print "x =", x 第6行代码与第1行代码处于同一个层次,是主程序必须执行的的代码,因此变量x的值为2。 第7行代码的输出结果: x = 2 注意当程序出现问题时,程序员首先要检查代码的书写格式,看是否因为代码缩进的问题导致了不期望的计算结果。