人人都会AI编程

15.3 常见报错与解决方案

更新时间:2026-06-28

在实际开发中,遇到报错是常态。以下列出 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")