python中库pydantic的作用和基本用法
Pydantic 是 Python 中用于数据验证和解析的核心库,其主要作用是通过类型提示(Type Hints)对数据进行强制校验和转换,帮助开发者在运行时确保数据的完整性和规范性,从而提升程序的稳定性和安全性 。以下是其核心功能和基本用法:
主要作用
- 数据验证
对输入数据(如 API 请求、配置文件等)进行严格校验,支持基础类型、复杂嵌套结构(如列表、字典、嵌套模型)及自定义类型的验证 。 - 数据解析与转换
自动将原始数据(如字符串、JSON)转换为指定类型(如整数、日期),并处理默认值和别名字段 。 - 模型管理
通过声明式模型类(继承BaseModel
)统一管理数据结构,简化代码逻辑 。 - 友好的错误提示
在数据无效时提供详细的报错信息,便于快速定位问题 。
基本用法
-
定义数据模型
通过继承pydantic.BaseModel
创建模型类,并在类中声明字段及其类型:from pydantic import BaseModelclass User(BaseModel):name: strage: int = 18 # 默认值
此时
User
模型会强制校验name
(必须为字符串)和age
(必须为整数,默认值为18)。 -
实例化与验证
实例化模型时,Pydantic 会自动校验数据并抛出异常:user = User(name="Alice", age=25) # 合法数据 invalid_user = User(name=123, age="twenty") # 报错:类型不匹配
错误示例会触发
ValidationError
,包含具体错误原因 。 -
数据解析与序列化
支持将原始数据(如 JSON)解析为模型对象,并可反向导出为字典或 JSON:data = {"name": "Bob", "age": 30} user = User(**data) # 解析 print(user.model_dump()) # 序列化为字典
-
高级特性
- 嵌套模型:字段可以引用其他模型类。
- 自定义校验器:通过
@field_validator
添加业务规则(如检查年龄范围)。 - 环境变量支持:结合
BaseSettings
管理应用配置 。
优势与适用场景
- 易用性:声明式语法直观简洁,减少冗余校验代码 。
- 广泛集成:常用于 FastAPI、Starlette 等框架中处理请求/响应数据 。
- 灵活性:支持动态模型生成、延迟校验(
model_validate
)等场景 。