Pydantic:用 Python 类型提示做数据验证,27k+ Star
Pydantic:用 Python 类型提示做数据验证,27k+ Star
Pydantic 是一款基于 Python 类型提示的数据验证库,目前在 GitHub 上已经获得了 27,917 个 Star。

它的核心思路是用原生 Python 语法定义数据模型,运行时自动完成验证和类型转换。开发者写类的时候,通过类型注解声明字段规则,Pydantic 会在实例化时检查数据是否合规,不合规就报错。

Pydantic 支持 Python 3.10 及以上版本。设计上考虑了对 IDE 和类型检查器的友好性,模型定义时能获得自动补全和类型推断,跟写普通 dataclass 的体验接近。
Pydantic V2 于 2023 年发布,是一次从底层到接口的全面重写。核心验证逻辑用 Rust 实现,处理速度比 V1 有显著改善。V2 同时内置了 V1 兼容模式,存量项目可以渐进迁移,不需要一次性改动全部代码。
安装方式很常规:
pip install -U pydantic
conda 用户也可以这样安装:
conda install pydantic -c conda-forge
下面是一个基本用法示例:
from datetime import datetime
from typing import Optional
from pydantic import BaseModel
class User(BaseModel):
id: int
name: str = 'John Doe'
signup_ts: Optional[datetime] = None
friends: list[int] = []
external_data = {'id': '123', 'signup_ts': '2017-06-01 12:22', 'friends': [1, '2', b'3']}
user = User(**external_data)
print(user)
#> User id=123 name='John Doe' signup_ts=datetime.datetime(2017, 6, 1, 12, 22) friends=[1, 2, 3]
这个例子展示了 Pydantic 的几个特点。id 字段声明为 int,但传入的是字符串 '123',Pydantic 自动完成了类型转换。signup_ts 是 Optional[datetime],传入日期字符串后转成 datetime 对象。friends 里的 b'3' 是 bytes 类型,也被转成整数。如果数据无法转换,Pydantic 会抛出 ValidationError,说明具体是哪个字段出了什么问题。
Pydantic 还支持嵌套模型。你可以把多个模型组合起来,验证复杂的多层数据结构。它也允许自定义验证器,在类型检查之外增加业务逻辑校验。
在 Python 生态中,Pydantic 被 FastAPI、SQLModel、LangChain 等项目作为底层依赖。这些项目选择 Pydantic,很大程度上是因为它能统一数据建模和验证流程,减少重复代码。
对于需要处理 API 请求、配置文件、数据库记录等外部输入的 Python 项目,Pydantic 是个值得考虑的工具。类型注解写在哪里,验证逻辑就自动跟到哪里,不需要额外维护一套校验规则。
dantic 是个值得考虑的工具。类型注解写在哪里,验证逻辑就自动跟到哪里,不需要额外维护一套校验规则。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)