首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python 常见的30个报错提示及解决办法

Python 常见的30个报错提示及解决办法

作者头像
用户11081884
发布2026-07-20 19:50:54
发布2026-07-20 19:50:54
140
举报

你是不是也有过这样的经历?

刚写完一段Python代码,满怀期待地运行...

结果屏幕上跳出一堆红色报错,瞬间头大?

说实话,我之前也是这样。每次看到报错,心里就咯噔一下,不知道从哪下手。

直到我发现了一个秘密:

这些报错其实都在"说人话",你只是没听懂它在说什么而已。


一、语法错误——就像写作文时的错别字

语法错误是Python最基础的问题,就像写作文时写错了字,老师根本看不懂你想表达什么。

1. SyntaxError: invalid syntax

这是什么鬼?其实就是你代码里有明显的语法错误。

比如:

  • 忘记了冒号 :
  • 括号没配对 ()
  • 用了中文标点

怎么解决?

报错信息会告诉你哪一行出错,就去那一行检查呗,特别注意冒号和括号!

2. SyntaxError: unexpected EOF while parsing

"EOF"是End of File的缩写,意思是文件结束了,但语句还没写完。

常见情况:

代码语言:javascript
复制
if x > 5
    # 后面啥都没有,Python不知道要干嘛

怎么解决?

要么补上代码块,要么加个pass占位:

代码语言:javascript
复制
if x > 5:
    pass  # 就当我在这里写了代码
3. SyntaxError: EOL while scanning string literal

字符串没写完!

代码语言:javascript
复制
message = "Hello world  # 缺了个引号

怎么解决?

检查引号是不是成对出现,单引号配单引号,双引号配双引号。

4. IndentationError: expected an indented block

Python强制缩进,你没缩进!

代码语言:javascript
复制
if x > 5:
print("x大于5")  # 这行应该缩进

怎么解决?

iffordef这些关键字后面,记得缩进(推荐4个空格)。

5. IndentationError: unindent does not match any outer indentation level

缩进乱套了!

可能是混用了空格和Tab,或者缩进层级不一致。

怎么解决?

统一用空格或Tab(推荐空格),编辑器里设置成Tab转4个空格最省心。

💡 金句缩进是Python的灵魂,混乱的缩进就是灵魂出窍!

二、名称和变量错误——就像叫错了朋友的名字

这类错误,说白了就是你叫了一个Python不认识的名字。

6. NameError: name 'xxx' is not defined

你用了变量name,但Python从来没见过这个变量!

代码语言:javascript
复制
print(username)  # username从来没定义过

怎么解决?

  • 检查拼写是不是错了
  • 确认变量是不是真的定义了
  • 看看变量是不是在作用域外
7. UnboundLocalError: local variable 'xxx' referenced before assignment

在函数里用了局部变量,但还没赋值就用上了。

代码语言:javascript
复制
def get_age():
    print(age)  # age还没赋值
    age = 18

怎么解决?

先赋值再用,或者用global声明成全局变量。

8. AttributeError: 'xxx' object has no attribute 'yyy'

你想用对象的某个属性,但这个对象根本没有这个属性!

代码语言:javascript
复制
number = 10
number.append(5)  # 数字没有append方法

怎么解决?

  • 检查对象类型对不对
  • 确认属性名拼写
  • hasattr()先判断一下有没有这个属性

💡 金句变量是代码的基石,未定义的变量就是空中楼阁!

三、类型和值错误——就像把苹果和香蕉强行相加

这类错误,就是你想干一些"不合理"的事情。

9. TypeError: unsupported operand type(s) for +: 'int' and 'str'

你想把数字和字符串加在一起!

代码语言:javascript
复制
result = 10 + "hello"  # 这咋加?

怎么解决?

先统一类型再操作:

代码语言:javascript
复制
result = str(10) + "hello"  # "10hello"
result = 10 + int("20")     # 30
10. TypeError: 'xxx' object is not callable

你把不是函数的东西当函数用了!

代码语言:javascript
复制
sum = 0
total = sum([1,2,3])  # sum现在是个数字,不是函数了

怎么解决?

别用内置函数名做变量名!

11. TypeError: missing 1 required positional argument

调用函数时忘了传参数!

代码语言:javascript
复制
def greet(name):
    print(f"Hello, {name}")

greet()  # 忘了传name

怎么解决?

检查函数定义,看缺哪个参数,补上就行。

12. ValueError: invalid literal for int() with base 10

你想把字符串转成数字,但字符串根本不是数字!

代码语言:javascript
复制
age = int("十八")  # 这能转成数字吗?

怎么解决?

try-except处理异常,或者先验证字符串内容:

代码语言:javascript
复制
try:
    age = int("18")
except ValueError:
    print("请输入有效的数字")
13. ValueError: too many values to unpack

解包时变量不够用!

代码语言:javascript
复制
a, b = [1, 2, 3]  # 3个值给2个变量?

怎么解决?

*接收多余值:

代码语言:javascript
复制
a, *b = [1, 2, 3]  # a=1, b=[2,3]
14. ValueError: not enough values to unpack

解包时变量多了!

代码语言:javascript
复制
a, b, c = [1, 2]  # 2个值给3个变量?

怎么解决?

确保列表长度和变量数量一致。

💡 金句类型不兼容,就像鱼和熊掌不可兼得!

四、索引和键错误——就像翻书翻到了不存在的页码

这类错误,就是你访问了一些不存在的内容。

15. IndexError: list index out of range

列表索引超出范围!

代码语言:javascript
复制
fruits = ["apple", "banana"]
print(fruits[2])  # 只有0和1,哪来的2?

怎么解决?

len()检查列表长度,或者用try-except处理:

代码语言:javascript
复制
if index < len(fruits):
    print(fruits[index])
else:
    print("索引超出范围")
16. KeyError: 'xxx'

字典里没有这个键!

代码语言:javascript
复制
scores = {"Alice": 90}
print(scores["Bob"])  # 字典里没有Bob

怎么解决?

get()方法或先检查:

代码语言:javascript
复制
print(scores.get("Bob", "不存在"))
# 或
if "Bob" in scores:
    print(scores["Bob"])
17. StopIteration

迭代器已经用完了,你还想继续迭代!

代码语言:javascript
复制
iterator = iter([1, 2])
next(iterator)
next(iterator)
next(iterator)  # 这时候已经没东西了

怎么解决?

for循环自动处理,或者在try-except里用next()

💡 金句索引越界,就像伸手去够天上的星星!

五、导入和模块错误——就像借一本不存在的书

这类错误,就是你想要用一些Python找不到的东西。

18. ModuleNotFoundError: No module named 'xxx'

你想导入一个模块,但Python找不到!

代码语言:javascript
复制
import requests  # 没安装requests库

怎么解决?

安装这个模块:

代码语言:javascript
复制
pip install requests
19. ImportError: cannot import name 'xxx'

模块里没有你想要导入的东西!

代码语言:javascript
复制
from math import square  # math模块里没有square函数

怎么解决?

检查模块内容,或者看看是不是拼写错了。

20. RecursionError: maximum recursion depth exceeded

递归太深,Python撑不住了!

代码语言:javascript
复制
def factorial(n):
    return n * factorial(n-1)  # 没有终止条件

怎么解决?

优化递归逻辑,加个终止条件,或者用迭代代替递归。

💡 金句递归太深,就像掉进了无底洞!

六、文件和IO错误——就像找不到朋友家

这类错误,就是你在操作文件时出了问题。

21. FileNotFoundError: [Errno 2] No such file or directory

文件不存在!

代码语言:javascript
复制
with open("不存在的文件.txt") as f:
    pass

怎么解决?

检查文件路径对不对,文件是不是在当前目录,用os.path.exists()先检查一下。

22. PermissionError: [Errno 13] Permission denied

权限不够!

可能是:

  • 文件是只读的
  • 你没有访问这个目录的权限

怎么解决?

检查文件权限,或者用管理员权限运行程序。

23. IsADirectoryError: [Errno 21] Is a directory

你想打开一个目录,但它是个文件夹!

代码语言:javascript
复制
with open("我的文件夹") as f:  # 这是个目录,不是文件
    pass

怎么解决?

确认路径是文件还是目录。

24. UnicodeDecodeError: 'utf-8' codec can't decode byte

文件编码不对!

代码语言:javascript
复制
with open("gbk编码.txt") as f:  # 文件是gbk编码,但用utf-8打开
    pass

怎么解决?

用正确的编码打开:

代码语言:javascript
复制
with open("gbk编码.txt", encoding="gbk") as f:
    pass

💡 金句文件不存在,就像找一个根本不存在的朋友!

七、其他运行时错误——就像生活中的各种小意外

这些错误虽然不那么常见,但遇到了也别慌。

25. ZeroDivisionError: division by zero

除数为零!

代码语言:javascript
复制
result = 10 / 0  # 这咋除?

怎么解决?

除法前检查除数:

代码语言:javascript
复制
if divisor != 0:
    result = 10 / divisor
else:
    print("除数不能为零")
26. OverflowError: (34, 'Result too large')

运算结果太大,超出了表示范围!

代码语言:javascript
复制
result = 10 ** 1000  # 这数字太大了吧?

怎么解决?

decimalfractions模块处理高精度计算。

27. MemoryError

内存不够用了!

怎么解决?

优化算法,减少大对象创建,或者用生成器。

28. AssertionError

assert断言失败!

代码语言:javascript
复制
assert 1 == 2  # 这条件是False,断言失败

怎么解决?

检查断言条件对不对,调试时可以用python -O禁用断言。

29. KeyboardInterrupt

用户按了Ctrl+C,中断了程序!

怎么解决?

try-except捕获,优雅退出:

代码语言:javascript
复制
try:
    # 你的代码
except KeyboardInterrupt:
    print("程序被用户中断")
    # 清理资源
30. SystemExit

调用了sys.exit(),正常退出。

怎么解决?

这是正常的退出信号,不需要处理。但可以在try-finally里做清理工作。

💡 金句错误不可怕,可怕的是不知道错误在哪!


写在最后

掌握了这30个常见报错,你的Python之路会顺畅很多。

但更重要的是,要养成这些好习惯:

  • ✅ 养成阅读错误堆栈的习惯
  • ✅ 使用try-except进行异常处理
  • ✅ 善用print()或调试器定位问题
  • ✅ 编写代码时遵循PEP 8规范,减少低级错误

记住:报错不是你的敌人,它是Python在告诉你问题出在哪。

学会了报错语言,你就能更快地找到问题,写出更健壮的代码。

“无他,惟手熟尔”!有需要的用起来!

如果你觉得这篇文章有用,欢迎点赞、转发、收藏、留言、推荐❤!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Nicholas与Pypi 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、语法错误——就像写作文时的错别字
    • 1. SyntaxError: invalid syntax
    • 2. SyntaxError: unexpected EOF while parsing
    • 3. SyntaxError: EOL while scanning string literal
    • 4. IndentationError: expected an indented block
    • 5. IndentationError: unindent does not match any outer indentation level
  • 二、名称和变量错误——就像叫错了朋友的名字
    • 6. NameError: name 'xxx' is not defined
    • 7. UnboundLocalError: local variable 'xxx' referenced before assignment
    • 8. AttributeError: 'xxx' object has no attribute 'yyy'
  • 三、类型和值错误——就像把苹果和香蕉强行相加
    • 9. TypeError: unsupported operand type(s) for +: 'int' and 'str'
    • 10. TypeError: 'xxx' object is not callable
    • 11. TypeError: missing 1 required positional argument
    • 12. ValueError: invalid literal for int() with base 10
    • 13. ValueError: too many values to unpack
    • 14. ValueError: not enough values to unpack
  • 四、索引和键错误——就像翻书翻到了不存在的页码
    • 15. IndexError: list index out of range
    • 16. KeyError: 'xxx'
    • 17. StopIteration
  • 五、导入和模块错误——就像借一本不存在的书
    • 18. ModuleNotFoundError: No module named 'xxx'
    • 19. ImportError: cannot import name 'xxx'
    • 20. RecursionError: maximum recursion depth exceeded
  • 六、文件和IO错误——就像找不到朋友家
    • 21. FileNotFoundError: [Errno 2] No such file or directory
    • 22. PermissionError: [Errno 13] Permission denied
    • 23. IsADirectoryError: [Errno 21] Is a directory
    • 24. UnicodeDecodeError: 'utf-8' codec can't decode byte
  • 七、其他运行时错误——就像生活中的各种小意外
    • 25. ZeroDivisionError: division by zero
    • 26. OverflowError: (34, 'Result too large')
    • 27. MemoryError
    • 28. AssertionError
    • 29. KeyboardInterrupt
    • 30. SystemExit
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档