在实际开发中,遇到报错是常态。以下列出 Python 开发中最常见的几类错误及其快速修复方法:
1. SyntaxError: invalid syntax
- 现象:运行代码时直接提示语法错误,箭头指向某一行
- 原因:冒号缺失(如
if True后面没跟:)、括号不匹配、中文符号混入 - 解决:检查报错行及前一行;确保所有括号成对出现;将中文标点(,。“”)改为英文 (, . "")
2. NameError: name 'xxx' is not defined
- 现象:提示变量未定义
- 原因:变量名拼写错误(大小写敏感)、变量未赋值就使用、作用域错误(在函数外访问函数内变量)
- 解决:检查拼写;确认变量在使用前已赋值;如需全局变量使用
global声明
3. TypeError: unsupported operand type(s)
- 现象:
can only concatenate str (not "int") to str或类似提示 - 原因:字符串与数字直接相加、函数参数类型传错
- 解决:使用
str()或int()强制转换;检查函数传入参数类型
4. IndexError: list index out of range
- 现象:列表索引越界
- 原因:访问了不存在的索引(如列表长度为3,访问索引3)
- 解决:使用
len()检查长度;或用list[-1]取最后一项更安全;添加判断if index < len(list):
5. KeyError: 'xxx'
- 现象:字典中找不到指定的键
- 原因:访问了字典中不存在的 key
- 解决:改用
dict.get('key', default_value);或先用if 'key' in dict:判断
6. ModuleNotFoundError: No module named 'xxx'
- 现象:导入模块失败
- 原因:未安装库、当前文件名与导入的模块名冲突(如文件名叫
random.py)、虚拟环境未激活 - 解决:
pip install xxx;重命名冲突文件;检查是否使用了正确的 Python 解释器
7. IndentationError / TabError
- 现象:缩进错误
- 原因:混用了空格和 Tab、缩进层级不对
- 解决:统一使用 4 个空格;在编辑器设置 "将 Tab 转为空格";删除旧缩进重新缩进
8. FileNotFoundError: [Errno 2] No such file or directory
- 现象:文件找不到
- 原因:相对路径错误(工作目录不是以为的位置)、文件确实不存在、路径分隔符在 Windows 和 Linux 下混用
- 解决:使用绝对路径
os.path.abspath();先用os.path.exists()检查;使用os.path.join()拼接路径
9. AttributeError: 'NoneType' object has no attribute 'xxx'
- 现象:None 值调用了方法或属性
- 原因:函数返回 None 但未做判断继续链式调用(如
re.search().group()未匹配到结果) - 解决:添加判空检查:
if result is not None:;或使用三元表达式result.group() if result else None
10. ZeroDivisionError: division by zero
- 现象:除数为 0
- 解决:除法前添加判断
if divisor != 0:;或用try-except捕获异常
通用调试技巧
- 从下往上读:Traceback 最下面的是真正出错位置,往上是调用链
- print 调试法:在报错行前打印变量类型和值
print(type(x), x) - 最小复现:将代码删减到最少行数能复现错误,往往就能发现问题
- 善用搜索:复制错误信息到搜索引擎,前面加上技术栈关键词(如 "python KeyError")