3. pydantic

pydantic 库是一种常用的用于数据接口 schema 定义与检查的库。

通过 pydantic 库,我们可以更为规范地定义和使用数据接口,这对于大型项目的开发将会更为友好。

当然,除了 pydantic 库之外,像是 valideer 库、marshmallow库、trafaret 库以及 cerberus 库等都可以完成相似的功能,但是相较之下,pydantic库的执行效率会更加优秀一些。

3.1. 基本用法

# 数据通过 BaseModel 类来定义
from pydantic import BaseModel

class Person(BaseModel):
	name: str

# 直接传值
p: Person = Person(name="Tom")
print(p.json())  # {"name": "Tom"}

# 通过字典传入
p = {"name": "Tom"}
p: Person = Person(**p)
print(p.json())  # {"name": "Tom"}

# 通过其他的实例化对象传入
p2: Person = Person.copy(p)
print(p2.json())  # {"name": "Tom"}

特色:

  • 传入错误值:报错

  • 传入未定义值:忽略

3.2. pydantic 基本数据类型

from pydantic import BaseModel
from typing import Dict, List, Sequence, Set, Tuple

class Demo(BaseModel):
    a: int # 整型
    b: float # 浮点型
    c: str # 字符串
    d: bool # 布尔型
    e: List[int] # 整型列表
    f: Dict[str, int] # 字典型,key 为 str,value 为 int
    g: Set[int] # 集合
    h: Tuple[str, int] # 元组

3.3. 高级数据结构考察

from enum import Enum

class Gender(str, Enum):
	man: str = "man"
	women: str = "women"

3.4. See also

  • https://blog.csdn.net/codename_cys/article/details/107675748