
Python开发过程中报错是“家常便饭”。理解常见错误的含义并掌握其解决方法,不仅能提升调试效率,更能加深对语言特性的理解。本文整理了Python编程中常见的30个报错提示,结合具体说明与解决方案,帮助快速定位问题、高效修复代码。
往期阅读>>>
Python 自动化管理Jenkins的15个实用脚本,提升效率
App2Docker:如何无需编写Dockerfile也可以创建容器镜像
Python 自动化识别Nginx配置并导出为excel文件,提升Nginx管理效率
SyntaxError: invalid syntax
说明:代码存在语法错误,如缺少冒号、括号不匹配、使用了非法字符等。
解决方法:检查报错行附近的语法,确认关键字拼写、括号配对、冒号使用是否正确。
SyntaxError: unexpected EOF while parsing
说明:解析到文件末尾时仍未找到完整的语句,常见于if、for等语句后缺少代码块。
解决方法:确保所有控制结构后都有缩进的代码块,或添加pass占位。
SyntaxError: EOL while scanning string literal
说明:字符串未正确闭合,如只写了开头引号,未写结束引号。
解决方法:检查字符串是否使用成对引号(单引号或双引号)闭合。
IndentationError: expected an indented block
说明:Python要求代码块必须缩进,但此处缺少缩进。
解决方法:在if、for、def等语句后添加缩进(推荐4个空格)。
IndentationError: unindent does not match any outer indentation level
说明:缩进层级混乱,可能是空格与Tab混用。
解决方法:统一使用空格或Tab进行缩进,建议设置编辑器为4个空格代替Tab。
NameError: name ‘xxx’ is not defined
说明:尝试使用未定义的变量或函数名。
解决方法:检查变量名拼写,确认变量是否已声明,或是否在作用域内。
UnboundLocalError: local variable ‘xxx’ referenced before assignment
说明:在函数内引用了局部变量,但该变量在引用前未赋值。
解决方法:确保在使用前赋值,或使用global关键字声明为全局变量。
AttributeError: ‘xxx’ object has no attribute ‘yyy’
说明:尝试访问对象不存在的属性或方法。
解决方法:检查对象类型,确认属性名拼写,或使用hasattr()判断是否存在。
TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’
说明:尝试对不兼容类型进行操作,如整数与字符串相加。
解决方法:使用str()或int()进行类型转换。
TypeError: ‘xxx’ object is not callable
说明:尝试将非函数对象当作函数调用,如变量名与函数名冲突。
解决方法:检查是否误将变量名用作函数,或覆盖了内置函数。
TypeError: missing 1 required positional argument
说明:调用函数时未传入必需的位置参数。
解决方法:检查函数定义,补全参数。
ValueError: invalid literal for int() with base 10
说明:尝试将非数字字符串转换为整数。
解决方法:使用try-except捕获异常,或先验证字符串格式。
ValueError: too many values to unpack
说明:解包时变量数量少于可迭代对象元素数量。
解决方法:使用*接收多余值,如a, *b = [1,2,3,4]。
ValueError: not enough values to unpack
说明:解包时变量数量多于元素数量。
解决方法:确保可迭代对象长度与接收变量一致。
IndexError: list index out of range
说明:访问列表索引超出范围。
解决方法:使用len()检查列表长度,或用try-except处理。
KeyError: ‘xxx’
说明:字典中不存在指定键。
解决方法:使用dict.get('key')或in判断键是否存在。
StopIteration
说明:迭代器已耗尽,但仍调用next()。
解决方法:在next()外使用try-except,或使用for循环自动处理。
ModuleNotFoundError: No module named ‘xxx’
说明:尝试导入的模块未安装或路径错误。
解决方法:使用pip install xxx安装,或检查PYTHONPATH和文件路径。
ImportError: cannot import name ‘xxx’
说明:从模块中导入不存在的名称。
解决方法:检查模块内容,确认名称拼写,或查看文档。
RecursionError: maximum recursion depth exceeded
说明:递归调用过深,超过Python默认限制(通常为1000层)。
解决方法:优化递归逻辑,或使用sys.setrecursionlimit()调整限制(慎用)。
FileNotFoundError: [Errno 2] No such file or directory
说明:尝试打开的文件不存在。
解决方法:检查文件路径是否正确,是否在当前目录,或使用os.path.exists()判断。
PermissionError: [Errno 13] Permission denied
说明:无权限访问文件或目录。
解决方法:检查文件权限,或以管理员权限运行程序。
IsADirectoryError: [Errno 21] Is a directory
说明:尝试以文件方式打开一个目录。
解决方法:确认路径指向的是文件而非目录。
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte
说明:文件编码不匹配,无法用UTF-8解码。
解决方法:使用正确的编码打开文件,如open('file.txt', encoding='gbk')。
ZeroDivisionError: division by zero
说明:除数为零。
解决方法:在除法前判断除数是否为零。
OverflowError: (34, ‘Result too large’)
说明:数值运算结果过大,超出表示范围。
解决方法:使用decimal或fractions模块处理高精度计算。
MemoryError
说明:程序占用内存过多。
解决方法:优化算法,减少大对象创建,或使用生成器。
AssertionError
说明:assert语句的条件为False。
解决方法:检查断言条件,或在调试时临时禁用断言。
KeyboardInterrupt
说明:用户按下Ctrl+C中断程序。
解决方法:使用try-except捕获并优雅退出。
SystemExit
说明:sys.exit()被调用。
解决方法:正常退出信号,无需处理,但可在try-finally中执行清理操作。
掌握这30个常见报错及其解决方法,将显著提升Python开发效率与代码健壮性,开发过程中:
养成阅读错误堆栈的习惯;
使用try-except进行异常处理;
善用print()或调试器定位问题;
编写代码时遵循PEP 8规范,减少低级错误。

想高效学习Python?下面三本精选好书满足你的不同需求!
《流畅的Python(第2版)》——Python进阶必读!深入讲解高级特性与最佳实践,适合想精进的开发者。
《Python从新手到高手》:初学者首选,系统学习全栈技能。
《Python数据分析:从零基础入门到案例实战》——数据科学利器!手把手教你用Python处理数据,实战案例学完就能用。
三本书均支持先用后付、运费险和7天无理由退货,放心购买!点击“购买”按钮,立即开启你的Python学习之旅吧!
https://ima.qq.com/wiki/?shareId=f2628818f0874da17b71ffa0e5e8408114e7dbad46f1745bbd1cc1365277631c
