python中Pydantic学习笔记

Pydantic :Python 数据验证与设置管理利器

Pydantic 是一个基于 Python 类型提示(Type Hints)的数据验证和设置管理库。它能自动将输入数据转换为指定类型,并在数据不符合要求时抛出清晰的错误信息。


2. 基础使用:定义模型

普通类定义模型有如下问题:

  • ❌ 无类型检查:传入什么类型就保存什么类型
  • ❌ 无数据验证:即使数据明显错误也不会提示
  • ❌ 无自动转换:字符串 “123” 不会自动转成整数 123
  • ❌ 容易出错:后续使用时可能因为类型错误而崩溃
# 普通类定义
class User:
    def __init__(self, id, name, email):
        self.id = id
        self.name = name
        self.email = email

# 使用普通类
user1 = User(id="123", name="Alice", email="alice@example.com")
print(user1.id)        # "123" (字符串类型!)
print(type(user1.id))  # <class 'str'>

# 传入错误数据也不会报错
user2 = User(id="abc", name=123, email=None)
print(user2.id)        # "abc" (还是字符串)
print(user2.name)      # 123 (整数类型!)
print(user2.email)     # None

而使用pydantic框架来定义模型则可解决问题。

2.1 最简单的模型

Pydantic 框架定义一个简单模型是通过继承 BaseModel来实现

from pydantic import BaseModel

class User(BaseModel):
    id: int
    name: str
    email: str

# 创建实例(自动类型转换和验证)
user = User(id="123", name="Alice", email="alice@example.com")
print(user)
# 输出: id=123 name='Alice' email='alice@example.com'

# 访问属性
print(user.id)      # 123 (int 类型)
print(user.name)    # "Alice"

2.2 自动类型转换

创建对象后赋值会自动转换

# 字符串 "123" 自动转为 int
user = User(id="123", name=123, email="test@example.com")
# name=123 会被转为字符串 "123"

2.3 验证失败示例

当传入不兼容类型时会提示失败

try:
    User(id="abc", name="Bob", email="invalid-email")
except Exception as e:
    print(e)
# 输出: 1 validation error for User
# id
#   Input should be a valid integer, unable to parse string as an integer [type=int_parsing, ...]

3. 字段类型与默认值

3.1 基本类型

from typing import Optional, List, Dict
from datetime import datetime

class Product(BaseModel):
    name: str
    price: float
    tags: List[str] = []          # 默认空列表
    metadata: Dict[str, str] = {
   
   } # 默认空字典
    created_at: datetime
    is_available: bool = True     # 默认 True
    description: Optional[str] = None  # 可选字段

3.2 使用 Field 进行高级配置

Field 是 Pydantic 提供的一个字段配置工具,它的主要作用是:在类型注解的基础上,为模型字段添加额外的验证规则、默认值、元数据和行为控制。

from pydantic import
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值