后端11 分钟
Python 类型系统与 Pydantic V2 深度实践:从验证到序列化的全链路优化
掌握 Pydantic V2 的 Rust 内核、自定义校验器、递归模型与高性能序列化技巧,构建类型安全的后端服务。
PythonPydantic类型系统FastAPI后端
为什么 Pydantic V2 是质的飞跃
Pydantic V2 用 Rust 重写了核心验证引擎,性能提升 5-50 倍。但更重要的是它的类型系统更完备,能表达更复杂的约束。
核心改进
#
1. 自定义校验器
from pydantic import BaseModel, field_validatorclass User(BaseModel):
email: str
@field_validator('email')
@classmethod
def validate_email(cls, v: str) -> str:
if '@' not in v:
raise ValueError('Invalid email')
return v.lower()
#
2. 模型继承与组合
支持通过 `BaseModel 的继承实现字段复用,配合 model_config 控制行为。
#
3. 高性能序列化
V2 的 model_dump() 比 V1 的 .dict() 快 10 倍以上,支持 exclude_none、by_alias 等参数。
实战建议
- 优先使用 field_validator 而非 @validator
- 复杂场景用 Annotated 类型组合约束
- API 响应用 model_dump(mode='json')` 确保类型安全