在传统的 Python 开发中,如果你收到一个 JSON 数据,你很难保证里面的 age 是整数而不是字符串,或者 email 是否格式正确。
- 没有 Pydantic: 你需要写大量的
if语句来检查类型和是否存在空值。 - 有了 Pydantic: 你定义一个模型(Model),它自动帮你完成校验和转换。
from pydantic import BaseModel, EmailStr, Field
class User(BaseModel):
id: int
name: str = "匿名用户"
email: EmailStr # 自动验证邮箱格式
age: int = Field(gt=0, lt=150) # 限制年龄在 0 到 150 之间
# 正确的数据
user = User(id="123", email="test@example.com", age=25)
# 注意:它会自动把字符串 "123" 强制转换为整数 123(类型强制转换)
print(user.id) # 输出: 123-
数据解析(Parsing)而非仅仅校验: 它不仅告诉你数据错没错,还能自动帮你转换类型(比如把字符串转成日期对象)。
-
速度极快: Pydantic V2 的核心是用 Rust 重写的,是 Python 生态中最快的验证库之一。
-
IDE 友好: 因为基于类型注解,你在写代码时,PyCharm 或 VS Code 会给你完美的自动补全提示。
-
生态核心: 它是现代 Web 框架 FastAPI 的基石——FastAPI 的自动文档(Swagger)和请求校验全是靠 Pydantic 实现的。