Pydantic学习实践:从基础到进阶

张开发
2026/4/3 10:31:24 15 分钟阅读
Pydantic学习实践:从基础到进阶
目录Pydantic学习实践:从基础到进阶一、初识Pydantic二、基础模型与字段定义三、进阶:数据约束与验证四、实战:嵌套模型与配置五、总结Pydantic学习实践:从基础到进阶在现代Python开发中,数据验证和序列化是构建健壮应用程序(尤其是WebAPI)的基石。Pydantic作为一个基于Python类型注解(TypeHints)的数据验证和设置管理库,凭借其简洁的语法和强大的功能,已经成为Python生态中不可或缺的工具。本文将带你从Pydantic的基础用法入手,逐步深入到进阶实践,掌握如何利用它来确保数据的完整性和类型安全。一、初识Pydantic核心功能与优势数据验证:自动检查输入数据是否符合模型定义的类型和约束。类型转换:尝试将输入数据(如字符串"123")自动转换为模型定义的目标类型(如int123)。数据序列化:轻松将模型实例转换为字典或JSON格式,便于存储或传输。IDE友好:基于类的定义方式,提供出色的自动补全和类型检查支持。安装在开始之前,请确保已安装Pydantic。本文基于PydanticV2(当前主流版本)。pip install pydantic二、基础模型与字段定义定义基础模型所有Pydantic模型都继承自BaseModel。通过定义类属性,我们可以声明数据的结构。frompydanticimportBaseModelclassUserBasic(BaseModel):""" 基本用户信息,最基础的Pydantic模型 """name:strage:intemail:strdefdemo_basic():""" 演示基础用法 """print("="*60)print("练习一:基础BaseModel")print("="*60)# ✅ 正确创建user1=UserBasic(name="张三",age=25,email="zhangsan@example.com")print(f'✅创建成功:{user1}')# ✅ 自动类型转换(字符串数字 - 整数)user2=UserBasic(name="李四",age="30",email="lisi@example.com")print(f"✅ 自动转换: age='30' - age={user2.age}(类型:{type(user2.age)})")# ✅ 从字典创建data={"name":"王五","age":28,"email":"wangwu@example.com"}user3=UserBasic(**data)print(f"✅ 从字典创建:{user3}")defmain():demo_basic()if__name__=="__main__":main()处理复杂类型Pydantic支持Python标准库中的复杂类型,如List、Dict、Optional等。fromtypingimportOptional,List,DictfromdatetimeimportdatetimeclassProduct(BaseModel):id:intname:str#可选字段,可以为Nonedescription:Optional[str]=None#列表,元素必须是字符串tags:List[str

更多文章