注册 登录
Python基础教程

第一章: 环境搭建,安装Python

第二章: 挑选一款趁手的IDE

第三章: 计算机基础知识

第四章: 命令行基础知识

第五章: 从全局把握Python

第六章: Python语言基础

第七章: Python流程控制

第八章: Python数据类型与运算

第九章: Python字符串类型

第十章: Python列表类型

第十一章: Python元祖类型

第十二章: Python字典类型

第十三章: Python集合类型

第十四章: Python函数处理

第十五章: Python文件处理

第十六章: Python面向对象

第十七章: Python异常处理

第十八章: Python模块处理

第十九章: Python项目实战

首页 > Python基础教程 > 第六章: Python语言基础 > 6.4节: 尴尬的代码缩进错误

6.4节: 尴尬的代码缩进错误

薯条老师 2020-04-21 15:43:11 206421 0

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6

6.4.1 IndentationError

初学者在学习Python时,稍不注意就会引发一个IndentationError。例如以下代码:

state = 0
# 判断变量state指向的值是否等于0
if state == 0:
  """
  如果变量state指向的值为0,
  就执行print("开心")
  """ 
  print("开心")
else:
    
  """
  否则执行print("开心")
  """ 
  print("不开心")

现在请同学们将上文的实例代码写入Python脚本文件中,然后在命令行或IDE中运行该脚本程序。

同学们可以复习第二章中的内容来学习如何在IDE中运行Python程序。复习5.1节的内容来学习如何在命令行中执行Python程序。

运行该脚本程序以后,在命令行或IDE的输出窗口中会出现如下错误信息:
 File "demo.py", line 9
    print("开心")
    ^
IndentationError: unexpected indent
从错误信息可知,在文件中的第9行出现了IndentationError。用PyCharm打开源代码文件,IDE会在引发异常的代码起始位置处标出红色的波浪线:

image.png

IndentationError在Python中被称为代码缩进错误,如果不遵循Python的代码缩进规则来编写程序,那么在程序的执行过程中就会抛出IndentationError。

IndentationError是Python内置的异常类型,表示缩进错误。同学们在初学Python时,稍不注意就会引发各种异常,例如常见的语法错误,缩进错误,编码错误等。

异常(Exception)是Python内置的错误处理机制,Python在解释执行程序脚本时,一旦出现错误,就会抛出异常。在出现异常时,同学们要善于分析错误信息,从错误信息中寻找解决问题的关键。

6.4.2 什么是代码缩进

编程语言中的代码缩进指的是调整代码与父级边缘的距离,这个距离用空格数来进行度量。例如缩进四个空格,指的是与父级边缘相距四个空格。例如下面包含缩进的代码:

# 与父级边缘相距0个空格
number=1
if number > 0:
    # 与父级边缘相距四个空格
    # print函数与上文的if语句是子级和父级的关系
    print(number)

6.4.3 代码缩进规则

Python对代码采取了强制性的缩进,同学们在编写Python程序时必须按其缩进规则来编写代码,否则程序在运行时会报错,抛出IndentationError的错误异常以下是薯条老师总结的,在Python中的代码缩进规则:

(1) 全局代码不需要缩进,必须顶格

(2) 同层次的语句须包含相同缩进的空格数

(3) 子级层次的语句与父级层次的语句必须有缩进

(4) 单行注释可以随意缩进,多行注释与同层次的代码保持相同的缩进

现在通过一则实例来讲解Python中的代码缩进规则:

# state是一个全局变量,与首行没有缩进,必须顶格
state = 0

# if语句块的首行没有缩进,必须顶格
if state == 0:
  """
  (1)冒号下方的代码属于子级层次,必须有缩进
  (2)多行注释与同层次的代码保持相同的缩进
  """   
  print("开心")
    
# else语句块的首行没有缩进,必须顶格
else:
  # 冒号下方的代码属于子级层次,必须有缩进
  # 与父级else语句所在的边缘水平相距四个空格
  print("不开心")
    
  # 与上面的print处于同一层级,必须包含相同缩进的空格数
  print("unhappy")

同学们要注意的是,单行注释虽可以随意缩进,但在实际开发中,通常与多行注释一样,与同层次的代码保持相同的缩进。

键盘中的Tab键输出的是空白字符,它在计算机系统中的编码与空格的编码是不一样的,在一些IDE或编辑器中,它们自动将Tab键的输出转化为了4个或8个空格,同学们在使用集成开发环境时可能需要进行额外配置,否则会带来移植上的问题。最佳的做法是在需要代码缩进的地方仅使用空格键来输出空格,这样就不会有差错。

6.4.4 代码缩进的意义

通过代码缩进可以区分源代码的逻辑层次,例如以下的代码:

# 与父级边缘相距0个空格
number=1
if number > 0:
    # 与父级边缘相距四个空格
    # print函数与上文的if语句是子级和父级的关系
    print(number)

从源代码的书写形式上可以立即看出冒号下方的为子级代码块。通过代码缩进可以规范代码的书写格式,让源代码在整体上看起来更加整齐美观。

没有缩进的代码:

# 与当前行的第一列相距0个空格
# 与父级边缘相距0个空格
number=1

if number > 0:
         # 与父级边缘相距四个空格
    # print函数与上文的if语句是子级和父级的关系
                         print(number)

强制缩进的代码:

# 与父级边缘相距0个空格
number=1
if number > 0:
    # 与父级边缘相距四个空格
    # print函数与上文的if语句是子级和父级的关系
    print(number)

6.4.5 最具实力的小班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。

(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪11K-20K, 免费领取课程大纲
(4) Python大数据分析,量化投资就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取Python学习资料:

关注微信公众号.jpg


欢迎 发表评论:

请登录

忘记密码我要注册

注册账号

已有账号?请登录