首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python 30个常见的运行时错误及解决方法

Python 30个常见的运行时错误及解决方法

作者头像
用户11081884
发布2026-07-20 19:11:39
发布2026-07-20 19:11:39
350
举报

Python编程过程中难免会遇到各种运行时错误。了解常见错误及其解决方法,能够帮助更快地定位和修复问题。以下是30个常见的Python运行时错误,每个错误都附有错误信息、说明和代码示例。

1. 忘记在声明末尾加冒号

错误信息SyntaxError: invalid syntax

说明:在 if 、 for 、 def 、 class 等语句末尾忘记添加冒号。

错误示例

代码语言:javascript
复制
if x > 5
    print("x is greater than 5")

正确写法

代码语言:javascript
复制
if x > 5:
    print("x is greater than 5")

2. 误用赋值操作符 = 代替比较操作符 ==

错误信息 SyntaxError: invalid syntax

说明:在条件判断中使用赋值操作符而非比较操作符。

错误示例

代码语言:javascript
复制
if x = 5:
    print("x is 5")

正确写法

代码语言:javascript
复制
if x == 5:
    print("x is 5")

3. 缩进错误

错误信息 IndentationError: unexpected indent

说明:代码缩进不一致或错误。

错误示例

代码语言:javascript
复制
def greet():
print("Hello")  # 缺少缩进

正确写法

代码语言:javascript
复制
def greet():
    print("Hello")

4. 在循环中忘记调用 len()

错误信息TypeError: ‘list’ object cannot be interpreted as an integer

说明:直接使用列表对象作为 range() 的参数,而非列表长度。

错误示例

代码语言:javascript
复制
items = [1, 2, 3]
for i in range(items):
    print(items[i])

正确写法

代码语言:javascript
复制
items = [1, 2, 3]
for i in range(len(items)):
    print(items[i])

5. 尝试修改字符串的值

错误信息 TypeError: ‘str’ object does not support item assignment

说明:字符串是不可变类型,不能直接通过索引修改。

错误示例

代码语言:javascript
复制
s = "hello"
s[0] = "H"

正确写法

代码语言:javascript
复制
s = "hello"
s = "H" + s[1:]

6. 连接非字符串与字符串

错误信息TypeError: can only concatenate str to str

说明:尝试将非字符串类型(如整数)与字符串直接连接。

错误示例

代码语言:javascript
复制
age = 25
print("I am " + age + " years old.")

正确写法

代码语言:javascript
复制
age = 25
print("I am " + str(age) + " years old.")

7. 字符串引号不匹配

错误信息SyntaxError: EOL while scanning string literal

说明:字符串开头和结尾的引号不匹配或缺失。

错误示例

代码语言:javascript
复制
print('Hello world")

正确写法

代码语言:javascript
复制
print("Hello world")

8. 变量或函数名拼写错误

错误信息 NameError: name ‘var’ is not defined

说明:使用了未定义的变量或函数名。

错误示例

代码语言:javascript
复制
x = 10
print(y)  # y未定义

正确写法

代码语言:javascript
复制
x = 10
print(x)

9. 方法名拼写错误

错误信息AttributeError: ‘str’ object has no attribute ‘method’

说明:调用了对象不存在的属性或方法。

错误示例

代码语言:javascript
复制
s = "HELLO"
print(s.lowercase())

正确写法

代码语言:javascript
复制
s = "HELLO"
print(s.lower())

10. 列表索引越界

错误信息IndexError: list index out of range

说明:尝试访问不存在的列表索引。

错误示例

代码语言:javascript
复制
lst = [1, 2, 3]
print(lst[5](@ref)

正确写法

代码语言:javascript
复制
lst = [1, 2, 3]
print(lst[0](@ref)  # 有效索引

11. 字典键不存在

错误信息 KeyError: ‘key’

说明:尝试访问字典中不存在的键。

错误示例

代码语言:javascript
复制
d = {"a": 1, "b": 2}
print(d["c"])

正确写法

代码语言:javascript
复制
d = {"a": 1, "b": 2}
print(d.get("c", "Key not found"))

12. 使用Python关键字作为变量名

错误信息SyntaxError: invalid syntax

说明:使用Python保留关键字(如 class 、 def )作为变量名。

错误示例

代码语言:javascript
复制
class = "Math"

正确写法

代码语言:javascript
复制
class_name = "Math"

13. 未初始化变量就进行自增操作

错误信息NameError: name ‘x’ is not defined

说明:变量未初始化就直接使用自增操作符。

错误示例

代码语言:javascript
复制
x += 1

正确写法

代码语言:javascript
复制
x = 0
x += 1

14. 函数内局部变量在赋值前被引用

错误信息UnboundLocalError: local variable referenced before assignment

说明:函数内局部变量在赋值前被使用,且存在同名的全局变量。

错误示例

代码语言:javascript
复制
x = 10
def func():
    print(x)
    x = 20
func()

正确写法

代码语言:javascript
复制
x = 10
def func():
    global x
    print(x)
    x = 20
func()

15. 尝试修改 range 对象

错误信息 TypeError: ‘range’ object does not support item assignment

说明 range 对象不可变,不能直接修改其元素。

错误示例

代码语言:javascript
复制
r = range(5)
r[0] = 10

正确写法

代码语言:javascript
复制
r = list(range(5))
r[0] = 10

16. 使用 ++ 或 – 操作符

错误信息SyntaxError: invalid syntax

说明Python不支持 ++ 操作符。

错误示例

代码语言:javascript
复制
x = 1
x++

正确写法

代码语言:javascript
复制
x = 1
x += 1

17. 类方法忘记添加 self 参数

错误信息TypeError: method() takes 0 positional arguments but 1 was given

说明:类方法定义时缺少 self 参数。

错误示例

代码语言:javascript
复制
class MyClass:
    def greet():
        print("Hello")
obj = MyClass()
obj.greet()

正确写法

代码语言:javascript
复制
class MyClass:
    def greet(self):
        print("Hello")
obj = MyClass()
obj.greet()

18. 除零错误

错误信息ZeroDivisionError: division by zero

说明:尝试将数字除以零。

错误示例

代码语言:javascript
复制
result = 10 / 0

正确写法

代码语言:javascript
复制
result = 10 / 2  # 避免除零

19. 导入不存在的模块

错误信息ModuleNotFoundError: No module named ‘module’

说明:尝试导入未安装或不存在的模块。

错误示例

代码语言:javascript
复制
import non_existent_module

正确写法

代码语言:javascript
复制
import math  # 确保模块已安装

20. 文件未找到错误

错误信息FileNotFoundError: [Errno 2] No such file or directory

说明:尝试打开不存在的文件。

错误示例

代码语言:javascript
复制
with open("missing_file.txt", "r") as f:
    content = f.read()

正确写法

代码语言:javascript
复制
try:
    with open("missing_file.txt", "r") as f:
        content = f.read()
except FileNotFoundError:
    print("File not found.")

21. 类型转换错误

错误信息ValueError: invalid literal for int() with base 10

说明:尝试将非数字字符串转换为整数。

错误示例

代码语言:javascript
复制
num = int("abc")

正确写法

代码语言:javascript
复制
num = int("123")

22. 递归深度超过限制

错误信息RecursionError: maximum recursion depth exceeded

说明:递归函数没有终止条件或递归深度过大。

错误示例

代码语言:javascript
复制
def infinite_recursion():
    infinite_recursion()
infinite_recursion()

正确写法

代码语言:javascript
复制
def finite_recursion(n):
    if n == 0:
        return
    finite_recursion(n-1)
finite_recursion(10)

23. 使用未声明的全局变量

错误信息NameError: name ‘x’ is not defined

说明:在函数内使用全局变量但未声明。

错误示例

代码语言:javascript
复制
def func():
    print(x)
func()

正确写法

代码语言:javascript
复制
x = 10
def func():
    global x
    print(x)
func()

24. 尝试迭代非迭代对象

错误信息TypeError: ‘int’ object is not iterable

说明:对不可迭代的对象(如整数)使用循环。

错误示例

代码语言:javascript
复制
for i in 42:
    print(i)

正确写法

代码语言:javascript
复制
for i in [42]:
    print(i)

25. 字典键为可变类型

错误信息 TypeError: unhashable type: ‘list’

说明:尝试使用可变类型(如列表)作为字典的键。

错误示例

代码语言:javascript
复制
d = {}
key = [1, 2]
d[key] = "value"

正确写法

代码语言:javascript
复制
d = {}
key = (1, 2)  # 使用元组
d[key] = "value"

26. 函数参数数量错误

错误信息TypeError: function() takes 2 positional arguments but 3 were given

说明:调用函数时传入的参数数量与定义不匹配。

错误示例

代码语言:javascript
复制
def add(a, b):
    return a + b
result = add(1, 2, 3)

正确写法

代码语言:javascript
复制
def add(a, b):
    return a + b
result = add(1, 2)

27. 使用未初始化的文件对象

错误信息ValueError: I/O operation on closed file

说明:尝试对已关闭的文件进行读写操作。

错误示例

代码语言:javascript
复制
f = open("file.txt", "w")
f.close()
f.write("Hello")

正确写法

代码语言:javascript
复制
with open("file.txt", "w") as f:
    f.write("Hello")

28. 循环内修改迭代对象

错误信息RuntimeError: dictionary changed size during iteration

说明:在迭代字典或列表时修改其大小。

错误示例

代码语言:javascript
复制
d = {"a": 1, "b": 2}
for key in d:
    del d[key]

正确写法

代码语言:javascript
复制
d = {"a": 1, "b": 2}
for key in list(d.keys()):
    del d[key]

29. 浮点数精度问题

错误信息:无明确错误,但计算结果不符合预期。

说明:浮点数运算可能产生精度误差。

错误示例

代码语言:javascript
复制
result = 0.1 + 0.2
print(result == 0.3)  # False

正确写法

代码语言:javascript
复制
result = 0.1 + 0.2
print(abs(result - 0.3) < 1e-10)  # 使用误差范围比较

30. 忽略异常导致程序崩溃

错误信息:根据具体错误而定。

说明:未处理可能出现的异常,导致程序意外终止。

错误示例

代码语言:javascript
复制
num = int(input("Enter a number: "))

正确写法

代码语言:javascript
复制
try:
    num = int(input("Enter a number: "))
except ValueError:
    print("Invalid input!")

通过熟悉这些常见错误,开发者可以更高效地调试代码,提升编程能力。在实际编程中,结合调试工具和异常处理机制,能够进一步减少运行时错误的影响。

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

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 忘记在声明末尾加冒号
  • 2. 误用赋值操作符 = 代替比较操作符 ==
  • 3. 缩进错误
  • 4. 在循环中忘记调用 len()
  • 5. 尝试修改字符串的值
  • 6. 连接非字符串与字符串
  • 7. 字符串引号不匹配
  • 8. 变量或函数名拼写错误
  • 9. 方法名拼写错误
  • 10. 列表索引越界
  • 11. 字典键不存在
  • 12. 使用Python关键字作为变量名
  • 13. 未初始化变量就进行自增操作
  • 14. 函数内局部变量在赋值前被引用
  • 15. 尝试修改 range 对象
  • 16. 使用 ++ 或 – 操作符
  • 17. 类方法忘记添加 self 参数
  • 18. 除零错误
  • 19. 导入不存在的模块
  • 20. 文件未找到错误
  • 21. 类型转换错误
  • 22. 递归深度超过限制
  • 23. 使用未声明的全局变量
  • 24. 尝试迭代非迭代对象
  • 25. 字典键为可变类型
  • 26. 函数参数数量错误
  • 27. 使用未初始化的文件对象
  • 28. 循环内修改迭代对象
  • 29. 浮点数精度问题
  • 30. 忽略异常导致程序崩溃
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档