2023年11月29日发(作者:)

pythonkeyerror_Python三⼤错误类型完全解析

本⽂含 5048 字, 5 图表截屏 建议阅读 23 分钟 在公众号王的机器后台回复 ERR 获取完整 Jupyter Notebook0引⾔

⽤ Python 写代码的流程(flow)可类⽐成三种演绎故事的形式,按顺序写、按条件写(if)、重复写(while, for),这些都叫做流程控制

(control flow)。

按顺序:⼀句⼀句写

按条件:⽤ if 语句

按重复:

关键词拼错:print 打成 primt

函数最后没带冒号:def fun()

字符串最后没带引号:'error

括号不匹配:print(

缩进位置错误

等等。

分析上图具体的中⽂和 Python 代码的语法错误例⼦:

# 中⽂昨天,送给我⼏本书。# Python 代码print('I love you)

那句中⽂缺少主语。

那句代码字符串没有引号。

那句中⽂虽然没任何语法错误,也可能发⽣(运⽓好赌对了),但是毫⽆逻辑。

那句代码想求 a 和 b 的均值,应该写成 (a+b)/2 但是写成 a+b/2。

2具体错误

由下图所⽰,程序开始时有两种可能,1. 没报错,2. 报错。没报错时程序按照顺序、按照条件语句(if),按照循环语句(for, while)跑,如果

报错了 Python 会给你很详细的信息。

下表是最齐全的错误层级表,每个错误类型都是 BaseException 的⼦类,⽽我们⼀般讲的异常处理是 Exception 下⾯的⼦类。

接下来我们就来看看常见的错误类型(下表粉⾊)。

BaseException+-- SystemExit+-- KeyboardInterrupt+-- GeneratorExit+-- Exception+-- StopIteration

File "", line 1

print('函数最后没有⼩括号'

^

SyntaxError: unexpected EOF while parsing

IndentationError

作为 SyntaxError 的⼦类,当缩进有问题时报错。

if True:print('缩进有问题')

---------------------------------------------------------------------------

KeyError Traceback (most recent call last)

---------------------------------------------------------------------------

ValueError Traceback (most recent call last)

i = iter([1,2,3])i

0x25af5c859e8>

⽐如忘记打反括号 - SyntaxError

(

File "", line 1

TypeError(对不同类型操作⽆效)

AttributeError(调⽤对象中不存在的属性)