第49集:调试技巧
学习目标
- 掌握基本的调试方法
- 学会使用print调试
- 理断点调试的概念
- 掌握调试工具的使用
- 学会分析错误信息
一、print调试
示例1:使用print输出变量
def calculate(a, b):
"""计算函数"""
print(f"输入:a={a}, b={b}") # 调试信息
result = a + b
print(f"中间结果:{result}") # 调试信息
return result * 2
print(calculate(5, 3))示例2:跟踪函数执行
def process_data(data):
"""处理数据"""
print("进入process_data函数")
print(f"原始数据:{data}")
result = [x * 2 for x in data]
print(f"处理后数据:{result}")
print("退出process_data函数")
return result
process_data([1, 2, 3, 4, 5])二、使用断言
示例3:基本断言
def divide(a, b):
"""除法函数"""
assert b != 0, "除数不能为零"
return a / b
print(divide(10, 2))
# print(divide(10, 0)) # 断言失败示例4:断言检查
def get_score(score):
"""获取分数"""
assert 0 <= score <= 100, "分数必须在0-100之间"
if score >= 90:
return "A"
elif score >= 80:
return "B"
else:
return "C"
print(get_score(95))
# print(get_score(105)) # 断言失败三、错误信息分析
示例5:解读错误信息
# 示例错误
# Traceback (most recent call last):
# File "test.py", line 5, in <module>
# print(10 / 0)
# ZeroDivisionError: division by zero解读错误信息的步骤
- Traceback:错误堆栈,显示错误发生的位置
- File: 错误发生的文件
- line: 错误发生的行号
- Error: 错误类型和描述
四、调试最佳实践
实践1:添加有意义的调试信息
def complex_calculation(data):
"""复杂计算"""
print(f"[DEBUG] 开始处理数据,长度:{len(data)}")
total = 0
for i, item in enumerate(data):
print(f"[DEBUG] 处理第{i}项:{item}")
total += item
print(f"[DEBUG] 计算完成,总和:{total}")
return total实践2:使用调试标志
DEBUG = True
def process_data(data):
"""处理数据"""
if DEBUG:
print(f"[DEBUG] 输入数据:{data}")
result = [x * 2 for x in data]
if DEBUG:
print(f"[DEBUG] 输出数据:{result}")
return result五、课后练习
练习1
使用print调试一个复杂的函数。
练习2
使用assert验证函数的输入和输出。
练习3
分析一段错误代码,找出问题所在。
练习4
实现一个带有调试功能的函数。
练习5
学习使用IDE的调试工具。