在开始正题之前,让我们先来看看本次学习的重难点。本次的知识点可以分为三个部分:
(1)常见的语法错误。
(2)基础语法中的常见异常。
(3)操作文件过程中的常见异常,这部分也是重难点知识。
编写代码时经常会遇到错误,因此掌握本课的内容对你将来自己做项目非常有帮助。至少可以节省大量排查错误的时间。加油!
1. 常见的语法错误
下面图片中显示的情况,相信你在平时写代码的过程中,肯定已经遇到过不少次了。
如果程序能够顺利运行,是不会出现这样的消息的。
这些在终端显示的"错误消息"表示我们在编写或运行程序时可能出现了问题。通常需要在Python中进行异常处理,以确保程序能够正确运行。
“异常处理”这个名词你应该是第一次接触,它包括我们在程序运行前的处理和在程序运行过程中的处理。
在Python中,异常处理是一门比较深奥的学问,涉及到很多特有的机制。不过我们暂时不需要掌握那么深入的知识,为了方便理解,你可以将解决问题或处理"错误消息"的过程称为"异常处理"。
不过,我们还不需要掌握这么难的知识,为了方便理解,你可以把解决问题或处理“错误消息”的过程称为“异常处理”。
我相信你凭借现有的编程经验,也能发现"错误消息"不仅限于图片中显示的那一种。实际上,按照Python官方文档的定义,这些"错误消息"至少可以分为两类:语法错误(syntax errors)和异常(exceptions)。
1.1 基本概念
语法错误(syntax errors)是初学者最容易犯的错误,简单来说就是代码不符合Python的基本语法规范,导致程序出错。
当你的代码完全符合Python的语法规范后,就可以尝试运行程序了。但是在程序运行过程中,仍然可能出现问题,我们称这类问题为异常。
作为一个有经验的人,为了让你少走弯路,我将根据你的技术水平列举一些常见的语法错误和异常。当然,我还会讲解它们产生的原因以及相应的解决办法。
此外,我还总结了一些在操作文件过程中可能遇到的常见异常,希望你引以为戒,尽量避免这些问题。
需要强调的是,本次讲解的语法错误和异常并不能代表全部,实际上,这只是冰山一角,还有许多复杂且棘手的异常等待你以后慢慢解决。
但是不要害怕,这是提高编程水平的必经之路。送你八个字:“遇事不慌,问题不大。”保持积极的心态是最重要的。
好了,按顺序,我们先来学习常见的语法错误。
正如前面所述,语法错误(syntax errors)是初学者最容易犯的错误,如果代码不符合 Python 的语法规范,比如漏了冒号,混用中英文符号等,就会出现这种错误。
如下图所示:
想要解决问题,最基本动作就是查看错误消息,终端会显示出现语法错误的那一行,并显示一个箭头^,指向这行里面检测到的第一个错误。
例如,在上图中,line 1和SyntaxError告诉你第一行有语法错误,出错位置很可能是在print() 附近。
需要说明的是,行数告诉你代码出现问题的位置,但不一定是最初出错的地方。有时候,真正的错误可能出现在提示信息所指示的位置之前,通常在前一行。
知道错误出现的位置后,就可以尝试解决错误了。下面我将分别讲解两种常见的语法错误:SyntaxError 和 IndentationError,以及它们产生的原因和相应的解决办法。
1.2 SyntaxError
第一种:SyntaxError: invalid syntax(无效语法)
在Python中,"SyntaxError: invalid syntax"是最常见的语法错误之一。它通常由以下几种情况引起:
一、遗漏了标点符号。
在第一种情况下,我们需要检查是否有遗漏标点符号。例如,在函数定义时,是否忘记了在括号后面加上冒号;在if条件判断和while循环中的条件后面是否有冒号;在for循环的可迭代对象后是否有冒号;以及在字典中的每个键值对之间是否有逗号等等。
此外,还要注意区分等于号(=)和等于比较运算符(==)的使用。
二、关键字拼写错误或遗漏。
第二种情况,很有可能是因为你手抖或者粗心,将 while 写成了 whlie,将 def 写成了 dfe 之类的错误,或者可能是你将 for...in... 中的关键字 in 忘写了。
三、变量名或函数名使用了关键字。
例:
# class 是 Python 的关键字,不可充当变量名
class = False
# True 是 Python 关键字,不可作为函数名
def True():
print('好好学习,天天向上')
正如代码里注释写的,class 和 True 都是 Python 中的关键字,关键字是不可以用来作为变量名、函数名或者类名的。
Python 还有以下关键字(看一眼就好,不用记住)。
大多数开发环境都会使用不同的颜色来显示关键字,因此当不小心使用关键字作为变量名时,会看到颜色变化,从而知道需要修改变量名。显