理解错误类型
Python 主要有几类错误:
- SyntaxError: 语法错误
- NameError: 未定义的变量/函数
- TypeError: 类型错误
- ValueError: 值错误
- AttributeError: 属性错误
- ImportError: 导入错误
- IndexError: 索引错误
- KeyError: 字典键错误
阅读错误信息的技巧
Traceback (most recent call last):
  File "script.py", line 10, in <module>  # 错误发生的文件和行号
    some_function()
  File "script.py", line 5, in some_function
    result = 10 / 0  # 具体出错的行
ZeroDivisionError: division by zero  # 错误类型和描述关键信息:
- 错误类型(最后一行)
- 错误发生的具体位置(文件名和行号)
- 调用栈(从下往上读)
调试技巧
使用 print 调试
def complex_function(data):
    print(f"输入数据: {data}")  # 调试信息
    result = process_data(data)
    print(f"处理结果: {result}")  # 调试信息
    return result使用 pdb 调试器
import pdb
def problematic_function():
    x = 10
    pdb.set_trace()  # 在这里设置断点
    y = x / 0
    return y使用 loggingpython
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
def function():
    logger.debug("开始执行函数")
    try:
        result = risky_operation()
        logger.info(f"操作成功: {result}")
    except Exception as e:
        logger.error(f"操作失败: {e}")
        raise异常处理最佳实践
具体异常处理
# 不好的做法
try:
    result = risky_operation()
except:  # 捕获所有异常
    pass
# 好的做法
try:
    result = risky_operation()
except ValueError as e:
    print(f"值错误: {e}")
except TypeError as e:
    print(f"类型错误: {e}")
except Exception as e:
    print(f"未知错误: {e}")
    raise  # 重新抛出未知异常使用 with 语句
# 自动处理资源清理
with open('file.txt', 'r') as f:
    content = f.read()
# 文件会自动关闭调试工具推荐
IDE 调试器
- PyCharm: 强大的图形化调试器
- VS Code: 集成调试功能
- Jupyter: 交互式调试
命令行工具
# 使用 -v 查看详细导入信息
python -v script.py
# 使用 -c 检查语法
python -m py_compile script.py
# 使用 -u 禁用输出缓冲
python -u script.py预防性编程
类型提示
from typing import List, Dict, Optional
def process_data(data: List[str]) -> Optional[Dict[str, int]]:
    if not data:
        return None
    return {"count": len(data)}断言
def divide(a: float, b: float) -> float:
    assert b != 0, "除数不能为零"
    return a / b单元测试
import unittest
class TestMyFunction(unittest.TestCase):
    def test_normal_case(self):
        result = my_function("test")
        self.assertEqual(result, "expected")
    
    def test_edge_case(self):
        with self.assertRaises(ValueError):
            my_function("")错误排查检查清单
- 确认错误类型和位置
- 检查变量值和类型
- 验证函数参数和返回值
- 确认导入的模块和函数
- 检查文件路径和权限
- 验证网络连接(如果涉及)
- 检查依赖包版本
- 查看相关文档和示例
官方文档
- 官网: https://www.python.org/
- 文档中心: https://docs.python.org/
- 中文文档: https://docs.python.org/zh-cn/
- 语言参考: 
 https://docs.python.org/3/reference/
 https://docs.python.org/3/reference/lexical_analysis.html
- 标准库: https://docs.python.org/3/library/
- 内置异常: https://docs.python.org/3/library/exceptions.html
- 异常层次结构: https://docs.python.org/3/library/exceptions.html#exception-hierarchy
在线工具
在线解析器
https://www.jyshare.com/compile/9
快速诊断命令
# 检查语法
python -m py_compile your_script.py
# 详细语法检查
python -m py_compile -v your_script.py
# 使用 ast 模块检查语法
python -c "import ast; ast.parse(open('your_script.py').read())"