常见的语法错误
按照Python官方文档的定义,“错误消息”至少可以被分为两类:语法错误(syntax errors)
和异常(exceptions)
语法错误(syntax errors)
简单来说就是代码不符合Python的基本语法规范而导致程序出了问题。
当你的代码完全符合Python的语法规范后,就该尝试运行程序了。但在程序运行过程中,还是有可能会发生问题,我们把这类问题称为异常(exceptions)
一、语法错误
例:
查看错误消息时
,终端会展示出现语法错误的那一行,并显示一个箭头^
,指向这行里面检测到的第一个错误(这里的错误为第一行print附件)
需要说明的是:行数会告诉你代码是在哪里出现的问题,但这不一定就是最开始出错的地方。有时,真正的错误会出现在信息指明的位置之前,通常就在前一行。
两种常见的语法错误:
SyntaxError
和IndentationError
1、SyntaxError:
Syntax Error(语法错误)
第一种:SyntaxError: invalid syntax(无效语法)
通常原因:(1)遗漏了标点符号:你需要检查标点符号是否有遗漏,像是在函数定义的时候,括号后面是否有冒号;if条件判断和while循环中的条件后面是否 有冒号;for循环的可迭代对象后是否有冒号;还有就是字典中每一个键值对之间是否有逗号等等。还有就是你可能将==
写成 了 =
,没有将等于和赋值区分开
(2)关键字拼写错误或遗漏:有可能是因为你手抖或者粗心,将while写成了whlie,将def写成了dfe之类的错误,或者可能是你将for...in...
中的关键 字in
忘写了
(3)变量名或函数名使用了关键字:下图中的单词不可作为关键字
大部分的开发环境都会用不同颜色来显示关键字,所以不需要熟记这些关键字,有印象即可
第二种:SyntaxError: invalid character in identifier(标识符中有无效字符)
简而言之,就是中英文符号混用了
第三种:SyntaxError: EOL while scanning string literal(检查到不完整的字符串)
这种情况通常是因为遗漏了字符串两边的引号,或者混用了引号(即字符串两边的引号不统一)。
总结:
2、IndentationError(缩进错误)
如下图:
语法错误自检清单:
二、异常
区分异常和错误:一般情况下,异常的“错误消息”会显示Traceback (most recent call back)
,而语法错误就不会显示。
1、TypeError(类型错误)
第一种:TypeError: unsupported operand type(s) for …(不支持的运算)
需使用float()或int()将数据类型转换。例:
第二种:TypeError: can only concatenate str (not "int") to str (只能用字符串拼接字符串)
用str()来进行数据转换。例:
第三种:TypeError: 'xxx' object is not iterable(对象不可被迭代)
for循环只能循环遍历可迭代对象。
常用的可迭代对象应该包括:字符串类型,列表,元组和字典。剩下的一些类型,比如:int类型,float类型,布尔类型和None就不是可迭代对象。
总结:
2、IndexError
出现频率较高的索引错误是IndexError: list index out of range(索引超出了范围)
通常出现于列表的使用中:如列表的索引最大值是4,但代码里却写了5,程序运行后就会出错。
tips:
列表的索引方向有两种:
从左往右:索引的最小值为0
.最大值为列表长度-1
。
从右往左:索引的最小值为-列表长度
,最大值为-1
3、
ModuleNotFoundError(未找到模块)
错误原因:模块名称拼写错误
4、AttributeError(属性错误)
模块内没有相应的属性。可能是拼写或记忆错误。
5、FileNotFoundError(路径错误)
检查文件或文件夹名是否正确。
6、UnicodeDecodeError(解码错误)
解决方法:第一种,先利用vscode等软件去查看文件的编码格式,然后再将文件的编码格式修改为你在代码中写的编码格式即可。
第二种,还是先在vscode里面查看文件的编码格式,然后将代码中的encoding参数改为该文件的编码格式即可。
7、总结:
完